Compare commits
No commits in common. "43b7773016b91ec2f95ee825a9cba62c109a7349" and "68e2055ee7f12c0ec0d9057f2d482db1a4ed8bd5" have entirely different histories.
43b7773016
...
68e2055ee7
|
|
@ -12,16 +12,9 @@
|
|||
|
||||
-->
|
||||
|
||||
## 2023.x.x (unreleased)
|
||||
|
||||
### General
|
||||
-
|
||||
|
||||
### Client
|
||||
-
|
||||
## 2023.11.1
|
||||
|
||||
### Server
|
||||
- Fix: トークンのないプラグインをアンインストールするときにエラーが出ないように
|
||||
- Fix: ノート取得時にノート数がlimitよりも少ない事がある問題を修正
|
||||
|
||||
## 2023.11.0
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ export const paramDef = {
|
|||
type: 'object',
|
||||
properties: {
|
||||
tokenId: { type: 'string', format: 'misskey:id' },
|
||||
token: { type: 'string', nullable: true },
|
||||
token: { type: 'string' },
|
||||
},
|
||||
anyOf: [
|
||||
{ required: ['tokenId'] },
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ export async function mainBoot() {
|
|||
});
|
||||
|
||||
for (const plugin of ColdDeviceStorage.get('plugins').filter(p => p.active)) {
|
||||
import('@/plugin.js').then(async ({ install }) => {
|
||||
import('../plugin').then(async ({ install }) => {
|
||||
// Workaround for https://bugs.webkit.org/show_bug.cgi?id=242740
|
||||
await new Promise(r => setTimeout(r, 0));
|
||||
install(plugin);
|
||||
|
|
|
|||
|
|
@ -202,17 +202,11 @@ let note = $ref(deepClone(props.note));
|
|||
// plugin
|
||||
if (noteViewInterruptors.length > 0) {
|
||||
onMounted(async () => {
|
||||
let result: Misskey.entities.Note | null = deepClone(note);
|
||||
let result:Misskey.entities.Note | null = deepClone(note);
|
||||
for (const interruptor of noteViewInterruptors) {
|
||||
try {
|
||||
result = await interruptor.handler(result);
|
||||
if (result === null) {
|
||||
isDeleted.value = true;
|
||||
return;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
result = await interruptor.handler(result);
|
||||
|
||||
if (result === null) return isDeleted.value = true;
|
||||
}
|
||||
note = result;
|
||||
});
|
||||
|
|
@ -304,7 +298,7 @@ function renote(viaKeyboard = false) {
|
|||
const { menu } = getRenoteMenu({ note: note, renoteButton, mock: props.mock });
|
||||
os.popupMenu(menu, renoteButton.value, {
|
||||
viaKeyboard,
|
||||
});
|
||||
}).then(focus);
|
||||
}
|
||||
|
||||
function reply(viaKeyboard = false): void {
|
||||
|
|
|
|||
|
|
@ -239,17 +239,11 @@ let note = $ref(deepClone(props.note));
|
|||
// plugin
|
||||
if (noteViewInterruptors.length > 0) {
|
||||
onMounted(async () => {
|
||||
let result: Misskey.entities.Note | null = deepClone(note);
|
||||
let result:Misskey.entities.Note | null = deepClone(note);
|
||||
for (const interruptor of noteViewInterruptors) {
|
||||
try {
|
||||
result = await interruptor.handler(result);
|
||||
if (result === null) {
|
||||
isDeleted.value = true;
|
||||
return;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
result = await interruptor.handler(result);
|
||||
|
||||
if (result === null) return isDeleted.value = true;
|
||||
}
|
||||
note = result;
|
||||
});
|
||||
|
|
@ -350,7 +344,7 @@ function renote(viaKeyboard = false) {
|
|||
const { menu } = getRenoteMenu({ note: note, renoteButton });
|
||||
os.popupMenu(menu, renoteButton.value, {
|
||||
viaKeyboard,
|
||||
});
|
||||
}).then(focus);
|
||||
}
|
||||
|
||||
function reply(viaKeyboard = false): void {
|
||||
|
|
|
|||
|
|
@ -750,11 +750,7 @@ async function post(ev?: MouseEvent) {
|
|||
// plugin
|
||||
if (notePostInterruptors.length > 0) {
|
||||
for (const interruptor of notePostInterruptors) {
|
||||
try {
|
||||
postData = await interruptor.handler(deepClone(postData));
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
postData = await interruptor.handler(deepClone(postData));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,10 @@ import { Plugin, noteActions, notePostInterruptors, noteViewInterruptors, postFo
|
|||
const parser = new Parser();
|
||||
const pluginContexts = new Map<string, Interpreter>();
|
||||
|
||||
export async function install(plugin: Plugin): Promise<void> {
|
||||
export function install(plugin: Plugin): void {
|
||||
// 後方互換性のため
|
||||
if (plugin.src == null) return;
|
||||
console.info('Plugin installed:', plugin.name, 'v' + plugin.version);
|
||||
|
||||
const aiscript = new Interpreter(createPluginEnv({
|
||||
plugin: plugin,
|
||||
|
|
@ -41,14 +42,7 @@ export async function install(plugin: Plugin): Promise<void> {
|
|||
|
||||
initPlugin({ plugin, aiscript });
|
||||
|
||||
try {
|
||||
await aiscript.exec(parser.parse(plugin.src));
|
||||
} catch (err) {
|
||||
console.error('Plugin install failed:', plugin.name, 'v' + plugin.version);
|
||||
return;
|
||||
}
|
||||
|
||||
console.info('Plugin installed:', plugin.name, 'v' + plugin.version);
|
||||
aiscript.exec(parser.parse(plugin.src));
|
||||
}
|
||||
|
||||
function createPluginEnv(opts: { plugin: Plugin; storageKey: string }): Record<string, values.Value> {
|
||||
|
|
|
|||
Loading…
Reference in New Issue