mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-09-20 21:50:11 +08:00
refactor: 基于 upstream/Erotica 重新整合本地功能(来源选择/合并详情/计数/窗口/首页)
将本地在 upstream !408(已安装应用合并+统计)之上的后续改动重新整合到最新 upstream/Erotica: - 已安装应用:卸载/打开按 APM/Spark 来源选择;计数总数=APM+Spark 包数(双来源计为独立包) - 查看详情:已安装页复用所有应用页合并详情视图(单来源优先已装类型,双来源自动模式) - 窗口:恢复阈值改为 1600x900,过大回退默认尺寸并居中,不自动最大化 - 首页推荐:致谢卡片移至其他内容下方,加大标题/卡片/致谢间距 - 隐藏排行榜/荣耀榜侧栏入口(代码保留,v-if=false) - 新增 scripts/test-build.sh 测试打包脚本(版本末段+1 加 -test)并更新 AGENTS.md 冲突文件(index.ts/App.vue/InstalledAppsModal.vue)均取本地完整实现(为上游版本的超集)。
This commit is contained in:
+23
-9
@@ -289,6 +289,8 @@ const showAndFocusMainWindow = (): void => {
|
||||
// 窗口尺寸持久化:保存/恢复上一次调整后的窗口大小,避免每次打开都使用默认尺寸
|
||||
const DEFAULT_WINDOW_SIZE = { width: 1366, height: 768 };
|
||||
const MIN_WINDOW_SIZE = { width: 800, height: 500 };
|
||||
// 超过该尺寸的窗口(通常为全屏/最大化状态)在恢复时回退到默认尺寸,避免「启动即全屏、还原按钮失效」
|
||||
const OVERSIZED_WINDOW_THRESHOLD = { width: 1600, height: 900 };
|
||||
|
||||
interface WindowState {
|
||||
width?: number;
|
||||
@@ -375,12 +377,24 @@ function scheduleSaveBounds(winInstance: BrowserWindow): void {
|
||||
|
||||
async function createWindow() {
|
||||
const saved = loadWindowState();
|
||||
// 恢复时:若上次窗口过大(>1600x900,通常为全屏/最大化),回退到默认尺寸并居中,
|
||||
// 避免「启动即全屏、还原按钮失效」;其余情况保留上次记录的实际尺寸(并居中)。
|
||||
// 放大/还原仍交由标题栏按钮控制。
|
||||
const oversized =
|
||||
(saved.width ?? 0) > OVERSIZED_WINDOW_THRESHOLD.width ||
|
||||
(saved.height ?? 0) > OVERSIZED_WINDOW_THRESHOLD.height;
|
||||
const restoredWidth = oversized
|
||||
? DEFAULT_WINDOW_SIZE.width
|
||||
: Math.max(saved.width ?? DEFAULT_WINDOW_SIZE.width, MIN_WINDOW_SIZE.width);
|
||||
const restoredHeight = oversized
|
||||
? DEFAULT_WINDOW_SIZE.height
|
||||
: Math.max(saved.height ?? DEFAULT_WINDOW_SIZE.height, MIN_WINDOW_SIZE.height);
|
||||
|
||||
const mainWindow = new BrowserWindow({
|
||||
title: "星火应用商店",
|
||||
width: saved.width ?? DEFAULT_WINDOW_SIZE.width,
|
||||
height: saved.height ?? DEFAULT_WINDOW_SIZE.height,
|
||||
x: saved.x,
|
||||
y: saved.y,
|
||||
width: restoredWidth,
|
||||
height: restoredHeight,
|
||||
center: true,
|
||||
minWidth: MIN_WINDOW_SIZE.width,
|
||||
minHeight: MIN_WINDOW_SIZE.height,
|
||||
frame: false,
|
||||
@@ -398,11 +412,11 @@ async function createWindow() {
|
||||
});
|
||||
win = mainWindow;
|
||||
|
||||
// 恢复上一次的最大化状态
|
||||
if (saved.maximized) {
|
||||
mainWindow.maximize();
|
||||
}
|
||||
logger.info({ saved }, "已恢复窗口状态");
|
||||
// 不再自动恢复最大化状态(避免无法还原);启动即居中显示,过大窗口已回退默认尺寸
|
||||
logger.info(
|
||||
{ saved, restoredWidth, restoredHeight, oversized },
|
||||
"已恢复窗口状态(过大窗口回退默认尺寸并居中)",
|
||||
);
|
||||
|
||||
// 窗口大小/位置/最大化变化后防抖保存,下次启动时恢复
|
||||
// 位置/最大化变化由主进程事件保存;尺寸变化由渲染端 DOM resize 经 IPC 兜底保存
|
||||
|
||||
Reference in New Issue
Block a user