MCPcopy Create free account
hub / github.com/CreminiAI/skillpack / handleSave

Function handleSave

web/js/chat-apps-dialog.js:207–264  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

205}
206
207async function handleSave() {
208 const telegramToken = telegramTokenInput.value.trim();
209 const slackBotToken = slackBotTokenInput.value.trim();
210 const slackAppToken = slackAppTokenInput.value.trim();
211 const feishuDomain = normalizeFeishuDomain(feishuDomainSelect.value);
212 const feishuAppId = feishuAppIdInput.value.trim();
213 const feishuAppSecret = feishuAppSecretInput.value.trim();
214 const hasFeishuConfig = Boolean(
215 feishuAppId ||
216 feishuAppSecret ||
217 feishuDomain !== DEFAULT_FEISHU_DOMAIN,
218 );
219
220 // 始终写入所有 adapter 键,空值也要显式传递,让后端能感知「清空」操作
221 const adapters = {
222 telegram: telegramToken ? { token: telegramToken } : null,
223 slack:
224 slackBotToken || slackAppToken
225 ? {
226 botToken: slackBotToken || undefined,
227 appToken: slackAppToken || undefined,
228 }
229 : null,
230 feishu: hasFeishuConfig
231 ? {
232 appId: feishuAppId || undefined,
233 appSecret: feishuAppSecret || undefined,
234 domain: feishuDomain,
235 }
236 : null,
237 };
238
239 const updates = { adapters };
240
241 try {
242 saveBtn.disabled = true;
243 const res = await saveConfigData(updates);
244
245 state.config.adapters = res.adapters;
246 state.restartRequired = !!res.requiresRestart;
247
248 if (res.requiresRestart) {
249 setStatus(
250 "Settings saved. Restart service to apply changes.",
251 "warning",
252 );
253 updateRestartButton(true);
254 } else {
255 close();
256 }
257
258 updateChatAppsButton();
259 } catch (err) {
260 setStatus("Save failed: " + err.message, "error");
261 } finally {
262 saveBtn.disabled = false;
263 }
264}

Callers

nothing calls this directly

Calls 6

saveConfigDataFunction · 0.90
updateChatAppsButtonFunction · 0.85
normalizeFeishuDomainFunction · 0.70
setStatusFunction · 0.70
updateRestartButtonFunction · 0.70
closeFunction · 0.70

Tested by

no test coverage detected