upd: Prompt for confirmation when Plugin:open_url is used

This commit is contained in:
Marie 2024-09-15 23:54:31 +02:00
parent 3f37db1a13
commit 9b7301fb2e
No known key found for this signature in database
GPG Key ID: 7ADF6C9CD9A28555
4 changed files with 17 additions and 3 deletions

View File

@ -291,6 +291,7 @@ removeAreYouSure: "Are you sure that you want to remove \"{x}\"?"
deleteAreYouSure: "Are you sure that you want to delete \"{x}\"?"
resetAreYouSure: "Really reset?"
areYouSure: "Are you sure?"
confirmRemoteUrl: "Are you sure that you want to go to \"{x}\"?"
saved: "Saved"
messaging: "Chat"
upload: "Upload"

4
locales/index.d.ts vendored
View File

@ -1180,6 +1180,10 @@ export interface Locale extends ILocale {
*
*/
"areYouSure": string;
/**
* {x}
*/
"confirmRemoteUrl": ParameterizedString<"x">;
/**
*
*/

View File

@ -291,6 +291,7 @@ removeAreYouSure: "「{x}」を削除しますか?"
deleteAreYouSure: "「{x}」を削除しますか?"
resetAreYouSure: "リセットしますか?"
areYouSure: "よろしいですか?"
confirmRemoteUrl: "「{x}」を開きますか?"
saved: "保存しました"
messaging: "チャット"
upload: "アップロード"

View File

@ -6,7 +6,8 @@
import { ref } from 'vue';
import { Interpreter, Parser, utils, values } from '@syuilo/aiscript';
import { aiScriptReadline, createAiScriptEnv } from '@/scripts/aiscript/api.js';
import { inputText } from '@/os.js';
import * as os from '@/os.js';
import { i18n } from '@/i18n.js';
import { Plugin, noteActions, notePostInterruptors, noteViewInterruptors, postFormActions, userActions, pageViewInterruptors } from '@/store.js';
const parser = new Parser();
@ -91,8 +92,15 @@ function createPluginEnv(opts: { plugin: Plugin; storageKey: string }): Record<s
registerPageViewInterruptor({ pluginId: opts.plugin.id, handler });
}),
'Plugin:open_url': values.FN_NATIVE(([url]) => {
utils.assertString(url);
window.open(url.value, '_blank', 'noopener');
(async () => {
utils.assertString(url);
const { canceled } = await os.confirm({
type: 'question',
text: i18n.tsx.confirmRemoteUrl({x: url.value}),
});
if (canceled) return;
window.open(url.value, '_blank', 'noopener');
})();
}),
'Plugin:config': values.OBJ(config),
};