quickadd 的一些脚本记录

一键切换 文件列表 和 quiet大纲的js脚本

module.exports = {
  entry: async (params) => {
    const { app } = params;

    // 这是一个更可靠的函数,用于激活或创建视图
    async function revealOrCreateLeaf(viewType, commandId) {
      // 1. 先尝试在左侧边栏寻找指定类型的视图
      const targetLeaf = app.workspace.getLeavesOfType(viewType)
        .find(leaf => leaf.getRoot() === app.workspace.leftSplit);

      // 2. 如果找到了,就直接激活它(最可靠)
      if (targetLeaf) {
        app.workspace.revealLeaf(targetLeaf);
      } else {
        // 3. 如果没找到,再使用命令来创建它
        await app.commands.executeCommandById(commandId);
      }
    }

    // --- 主逻辑 ---

    // 使用 data-type="file-explorer" 来判断文件列表 (这个是正确的)
    const isFileExplorerActive = !!document.querySelector(
      '.mod-left-split .workspace-tab-header.is-active[data-type="file-explorer"]'
    );
    
    // 使用从 main.js 确认的正确 ID "quiet-outline" 来判断大纲
    const isOutlineActive = !!document.querySelector(
      '.mod-left-split .workspace-tab-header.is-active[data-type="quiet-outline"]'
    );

    // 确保左侧边栏是展开的
    app.workspace.leftSplit.expand();

    // 根据当前状态,执行切换
    if (isFileExplorerActive) {
      // 如果当前是文件列表 -> 切换到 Quiet Outline
      // 使用正确的 viewType 'quiet-outline'
      await revealOrCreateLeaf('quiet-outline', 'quiet-outline:quiet-outline');

    } else if (isOutlineActive) {
      // 如果当前是 Quiet Outline -> 切换回文件列表
      await revealOrCreateLeaf('file-explorer', 'file-explorer:open');
      
    } else {
      // 如果两者都不是 (例如当前是“搜索”视图),默认切换到文件列表
      new Notice("当前视图非文件列表或大纲,已切换到文件列表。");
      await revealOrCreateLeaf('file-explorer', 'file-explorer:open');
    }
  }
}