diff --git a/ui/bindings.js b/ui/bindings.js
index bbd413c..cd00232 100644
--- a/ui/bindings.js
+++ b/ui/bindings.js
@@ -3,45 +3,36 @@ import { saveSettingsDebounced } from "/script.js";
import { defaultSettings, extensionName } from "../utils/settings.js";
import { pluginAuthStatus, activatePluginAuthorization } from "../utils/auth.js";
import { fetchSupportedModels } from "../core/api.js";
-import { setAvailableModels, populateModelDropdown } from "./state.js";
+
+import { setAvailableModels, populateModelDropdown, getLatestUpdateInfo } from "./state.js";
import { fixCommand, testReplyChecker } from "../core/commands.js";
-
export function bindModalEvents() {
- const container = $("#amily2-drawer-content");
+ const container = $("#amily2_drawer_content");
- if (container.data("events-bound")) return;
+ if (container.data("events-bound")) return;
-
- const snakeToCamel = (s) => s.replace(/_([a-z])/g, (g) => g[1].toUpperCase());
- const updateAndSaveSetting = (key, value) => {
-
- console.log(`[Amily-谕令确认] 收到指令: 将 [${key}] 设置为 ->`, value);
-
- if (!extension_settings[extensionName]) {
- extension_settings[extensionName] = {};
- }
- extension_settings[extensionName] = {
- ...extension_settings[extensionName],
- [key]: value,
+ const snakeToCamel = (s) => s.replace(/_([a-z])/g, (g) => g[1].toUpperCase());
+ const updateAndSaveSetting = (key, value) => {
+ console.log(`[Amily-谕令确认] 收到指令: 将 [${key}] 设置为 ->`, value);
+ if (!extension_settings[extensionName]) {
+ extension_settings[extensionName] = {};
+ }
+ extension_settings[extensionName] = { ...extension_settings[extensionName], [key]: value };
+ saveSettingsDebounced();
+ console.log(`[Amily-谕令镌刻] [${key}] 的新状态已保存。`);
};
- saveSettingsDebounced();
-
- console.log(`[Amily-谕令镌刻] [${key}] 的新状态已保存。`);
- };
-
-
- container
- .off("click.amily2.auth")
- .on("click.amily2.auth", "#auth_submit", async function () {
- const authCode = $("#amily2_auth_code").val().trim();
- if (authCode) {
- await activatePluginAuthorization(authCode);
- } else {
- toastr.warning("请输入授权码", "Amily2号");
- }
- });
+ container
+ .off("click.amily2.auth")
+ .on("click.amily2.auth", "#auth_submit", async function () {
+ const authCode = $("#amily2_auth_code").val().trim();
+ if (authCode) {
+ await activatePluginAuthorization(authCode);
+ } else {
+ toastr.warning("请输入授权码", "Amily2号");
+ }
+ });
container
.off("click.amily2.actions")
@@ -83,6 +74,62 @@ export function bindModalEvents() {
}
},
);
+
+
+ container
+ .off("click.amily2.expand_editor")
+ .on("click.amily2.expand_editor", "#amily2_expand_editor", function (event) {
+ if (!pluginAuthStatus.authorized) return;
+ event.stopPropagation();
+ const selectedKey = $("#amily2_prompt_selector").val();
+ const currentContent = $("#amily2_unified_editor").val();
+ const dialogHtml = `
+ `;
+ const dialogElement = $(dialogHtml).appendTo('body');
+ const dialogTextarea = dialogElement.find('#amily2_dialog_editor');
+ dialogTextarea.val(currentContent);
+ const closeDialog = () => { dialogElement[0].close(); dialogElement.remove(); };
+ dialogElement.find('.popup-button-ok').on('click', () => {
+ const newContent = dialogTextarea.val();
+ $("#amily2_unified_editor").val(newContent);
+ updateAndSaveSetting(selectedKey, newContent);
+ toastr.success(`谕令 [${selectedKey}] 已镌刻!`, "Amily2号");
+ closeDialog();
+ });
+ dialogElement.find('.popup-button-cancel').on('click', closeDialog);
+ dialogElement[0].showModal();
+ });
+
+ container
+ .off("click.amily2.update")
+ .on("click.amily2.update", "#amily2_update_button", function() {
+ $("#amily2_update_indicator").hide();
+
+ const updateInfo = getLatestUpdateInfo();
+ if (updateInfo && updateInfo.changelog) {
+ const dialogHtml = `
+ `;
+ const dialogElement = $(dialogHtml).appendTo('body');
+ const closeDialog = () => { dialogElement[0].close(); dialogElement.remove(); };
+ dialogElement.find('.popup-button-ok').on('click', closeDialog);
+ dialogElement[0].showModal();
+
+ } else {
+ toastr.info("未能获取到云端情报,请稍后再试。", "情报部回报");
+ }
+ });
container
.off("change.amily2.checkbox")
@@ -193,4 +240,4 @@ export function bindModalEvents() {
setTimeout(updateEditorView, 100);
container.data("events-bound", true);
-}
\ No newline at end of file
+}