Skip to content

Commit

Permalink
Fix: File backup function is abnormal #50
Browse files Browse the repository at this point in the history
  • Loading branch information
topcss committed Dec 27, 2018
1 parent c8c98c7 commit 94e06a8
Show file tree
Hide file tree
Showing 10 changed files with 81 additions and 46 deletions.
4 changes: 4 additions & 0 deletions app/src/define.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ export let sReleasesUrl = "https://github.com/NaoTu/DesktopNaotu/releases";
*/
export let sExportTitle = "KityMinder";

/**
* 操作状态
*/
export type StatusList = "none" | "opening" | "closing" | "saving";
//#endregion

//#region 2. 可能变化的部分
Expand Down
14 changes: 9 additions & 5 deletions app/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { openFileByDrop, openKm } from "./lib/file";
import { saveDialog } from "./lib/dialog";
import { monitorExitRequest } from "./lib/exit";
import { naotuBase } from "./lib/base";
import { onSelectedNodeItem } from "./lib/minder";
import { onSelectedNodeItem, hasData } from "./lib/minder";
import { remote } from "electron";
import { shortcutDialog } from "./ui/shortcut";

Expand Down Expand Up @@ -41,12 +41,16 @@ $(function() {
if (minder != null) {
// auto saving
minder.on("contentchange", function(argv: any) {
logger.info(`invoked contentchange()`);
// 操作完成之后才触发事件
if (naotuBase.getState() == "none") {
logger.info(`invoked contentchange()`);

naotuBase.OnEdited();
naotuBase.OnEdited();

if (naotuConf.getModel().isAutoSave) {
saveDialog();
// 即使开启自动保存,必须有数据才保存
if (naotuConf.getModel().isAutoSave) {
saveDialog();
}
}
});

Expand Down
18 changes: 10 additions & 8 deletions app/src/lib/base.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { addRecentlyRecord } from "./recently";
import { StatusList } from "../define";

/**
* 当做状态机类用
Expand All @@ -18,19 +19,19 @@ class NaotuBase {
if (value) addRecentlyRecord(value);
}

private _state: StatusList;
public getState() {
return this._state;
}
public setState(str: StatusList) {
this._state = str;
}

// 保存序号
private _savedNum: number;
// 修改序号
private _changedNum: number;

/**
* 打开时调用
*/
public OnOpened() {
// 打开时,会出发2次修改,需豁免
this._changedNum -= 2;
}

/**
* 保存时调用
*/
Expand Down Expand Up @@ -61,6 +62,7 @@ class NaotuBase {
* 私有的构造方法
*/
private constructor() {
this._state = "none";
this._kmPath = null;
this._changedNum = 0;
this._savedNum = 0;
Expand Down
13 changes: 7 additions & 6 deletions app/src/lib/electron.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@ export function getAppInstance() {
* @param fileName 文件路径
*/
export function showFileName(fileName: string) {
if (fileName != undefined) {
let title = "";
if (fileName) {
let index = fileName.lastIndexOf("/");

if (fileName.lastIndexOf("\\") > -1) index = fileName.lastIndexOf("\\");
let title = fileName.substring(index + 1) + " - " + I18n.__("sAppName");
title = fileName.substring(index + 1) + " - ";
}

let appInstance = getAppInstance();
if (appInstance) {
appInstance.setTitle(title);
}
let appInstance = getAppInstance();
if (appInstance) {
appInstance.setTitle(title + I18n.__("sAppName"));
}
}
23 changes: 19 additions & 4 deletions app/src/lib/file.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,16 @@ export function openKm(filePath: string) {
logger.info(`open file: ${filePath}`);
if (!existsSync(filePath)) throw new Error(`file not found, ${filePath}`);

// 开启状态保护
naotuBase.setState("opening");

naotuBase.setCurrentKm(filePath);

setMinder(readJson(filePath));

showFileName(filePath);

naotuBase.setCurrentKm(filePath);
naotuBase.setState("none");
} catch (error) {
logger.error("openKm error, ", error);
}
Expand All @@ -31,12 +36,22 @@ export function openKm(filePath: string) {
*/
export function saveKm(filePath: string) {
try {
writeJson(filePath, getMinder());
var minder = getMinder();

showFileName(filePath);
// 修改内容时,记录日志
logger.info(`${filePath} => ${JSON.stringify(minder)}`);

naotuBase.setState("saving");

naotuBase.setCurrentKm(filePath);

writeJson(filePath, minder);

showFileName(filePath);

naotuBase.OnSaved();

naotuBase.setState("none");
} catch (error) {
logger.error("saveKm error, ", error);
}
Expand Down
3 changes: 0 additions & 3 deletions app/src/lib/minder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ import { logger } from "../core/logger";

export function setMinder(json: JSON | any) {
editor.minder.importJson(json);

// 触发打开方法
naotuBase.OnOpened();
}

export function getMinder() {
Expand Down
29 changes: 17 additions & 12 deletions app/src/lib/window.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { copy, writeText, writeBuffer } from "../core/io";
import execAsync from "../core/exec";
import { logger } from "../core/logger";
import { initRoot, getDefaultPath } from "./minder";
import { getAppInstance } from "./electron";
import { getAppInstance, showFileName } from "./electron";
import { basename } from "path";

//#region 3. 窗口对话框相关
Expand Down Expand Up @@ -46,6 +46,19 @@ export function newDialog() {
});
}

function doCloseFile() {
naotuBase.setState("closing");

// 若已保存,则直接初始化
initRoot();

showFileName("");

logger.info(`关闭文件: "${naotuBase.getCurrentKm()}"`);

naotuBase.setState("none");
}

/**
* 关闭文件
*
Expand All @@ -55,20 +68,13 @@ export function newDialog() {
export function closeFile() {
// 如果关闭成功,也触发一次保存事件
if (naotuBase.HasSaved()) {
// 若已保存,则直接初始化
initRoot();

naotuBase.OnSaved();
logger.info(`关闭文件: "${naotuBase.getCurrentKm()}"`);
doCloseFile();
} else {
bootbox.confirm({
message: I18n.__("sCloseTip"),
callback: (result: boolean) => {
if (result) {
initRoot();

naotuBase.OnSaved();
logger.info(`关闭文件: "${naotuBase.getCurrentKm()}"`);
doCloseFile();
}
}
});
Expand Down Expand Up @@ -207,5 +213,4 @@ export function minwin() {
}
}


//#endregion
//#endregion
2 changes: 1 addition & 1 deletion app/src/version.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export let version = [3, 2, 0, 512];
export let version = [3, 2, 1, 513];
7 changes: 7 additions & 0 deletions doc/History.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@

## 更新记录

### 3.2.1-Beta / 2018-12-27

- 新增 记录内容日志
- 修复 关闭文件时产生新文件
- 修复 开启自动保存后,产生新文件
- 修复 关闭文件时,标题显示不正确

### 3.2.0-Beta / 2018-12-24

- 采用新技术(typescript)重构软件以提高稳定性
Expand Down
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
{
"name": "desktopnaotu",
"version": "3.2.0",
"version": "3.2.1",
"description": "桌面版脑图",
"main": "dist/main.js",
"scripts": {
"start": "gulp default",
"packwin32": "electron-packager ./ DesktopNaotu --asar=true --platform=win32 --arch=ia32 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=3.2.0 --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune",
"packwin32dev": "electron-packager ./ DesktopNaotu --platform=win32 --arch=ia32 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=3.2.0 --ignore=\"(.git|screenshot|doc|bower_components|electron-packager)\" --overwrite --prune",
"packwin64": "electron-packager ./ DesktopNaotu --asar=true --platform=win32 --arch=x64 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=3.2.0 --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune",
"packwin64dev": "electron-packager ./ DesktopNaotu --platform=win32 --arch=x64 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=3.2.0 --ignore=\"(.git|screenshot|doc|bower_components|electron-packager)\" --overwrite --prune",
"packmacos": "electron-packager ./ DesktopNaotu --asar=true --platform=darwin --arch=x64 --out=../OutApp --icon=app/static/favicon.icns --electron-version=3.0.10 --app-version=3.2.0 --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune",
"packlinux": "electron-packager ./ DesktopNaotu --asar=true --platform=linux --arch=x64 --out=../OutApp --icon=app/static/favicon.png --electron-version=3.0.10 --app-version=3.2.0 --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune"
"packwin32": "electron-packager ./ DesktopNaotu --asar=true --platform=win32 --arch=ia32 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=3.2.1 --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune",
"packwin32dev": "electron-packager ./ DesktopNaotu --platform=win32 --arch=ia32 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=3.2.1 --ignore=\"(.git|screenshot|doc|bower_components|electron-packager)\" --overwrite --prune",
"packwin64": "electron-packager ./ DesktopNaotu --asar=true --platform=win32 --arch=x64 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=3.2.1 --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune",
"packwin64dev": "electron-packager ./ DesktopNaotu --platform=win32 --arch=x64 --out=../OutApp --icon=app/static/favicon.ico --electron-version=3.0.10 --app-version=3.2.1 --ignore=\"(.git|screenshot|doc|bower_components|electron-packager)\" --overwrite --prune",
"packmacos": "electron-packager ./ DesktopNaotu --asar=true --platform=darwin --arch=x64 --out=../OutApp --icon=app/static/favicon.icns --electron-version=3.0.10 --app-version=3.2.1 --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune",
"packlinux": "electron-packager ./ DesktopNaotu --asar=true --platform=linux --arch=x64 --out=../OutApp --icon=app/static/favicon.png --electron-version=3.0.10 --app-version=3.2.1 --ignore=\"(.git|screenshot|doc|src|app|bower_components|electron-packager)\" --overwrite --prune"
},
"repository": {
"type": "git",
Expand Down

0 comments on commit 94e06a8

Please sign in to comment.