Update localforage to use jsinterface

This commit is contained in:
ckcz123 2021-08-30 15:56:56 +08:00
parent 6065676007
commit 5c2caf7556
3 changed files with 79 additions and 13 deletions

View File

@ -2804,7 +2804,8 @@ actions.prototype._clickStorageRemove = function (x, y) {
actions.prototype._clickStorageRemove_all = function () { actions.prototype._clickStorageRemove_all = function () {
core.myconfirm("你确定要清除【全部游戏】的所有本地存档?\n此行为不可逆", function () { core.myconfirm("你确定要清除【全部游戏】的所有本地存档?\n此行为不可逆", function () {
var done = function () { core.ui.drawWaiting("正在清空,请稍候...");
core.clearLocalForage(function () {
core.saves.ids = {}; core.saves.ids = {};
core.saves.autosave.data = null; core.saves.autosave.data = null;
core.saves.autosave.updated = false; core.saves.autosave.updated = false;
@ -2816,9 +2817,7 @@ actions.prototype._clickStorageRemove_all = function () {
core.control._updateFavoriteSaves(); core.control._updateFavoriteSaves();
core.removeLocalStorage('saveIndex'); core.removeLocalStorage('saveIndex');
core.drawText("\t[操作成功]你的所有存档已被清空。"); core.drawText("\t[操作成功]你的所有存档已被清空。");
}; });
core.ui.drawWaiting("正在清空,请稍候...");
localforage.clear(done);
}); });
} }

View File

@ -2285,7 +2285,7 @@ control.prototype.getAllSaves = function (callback) {
////// 获得所有存在存档的存档位 ////// ////// 获得所有存在存档的存档位 //////
control.prototype.getSaveIndexes = function (callback) { control.prototype.getSaveIndexes = function (callback) {
var indexes = {}; var indexes = {};
localforage.keys(function (err, keys) { core.keysLocalForage(function (err, keys) {
if (err) { if (err) {
main.log(err); main.log(err);
return callback(indexes); return callback(indexes);

View File

@ -257,12 +257,11 @@ utils.prototype.setLocalForage = function (key, value, successCallback, errorCal
return; return;
} }
// Save to localforage var name = core.firstData.name + "_" + key;
var str = JSON.stringify(value).replace(/[\u007F-\uFFFF]/g, function (chr) { var str = JSON.stringify(value).replace(/[\u007F-\uFFFF]/g, function (chr) {
return "\\u" + ("0000" + chr.charCodeAt(0).toString(16)).substr(-4) return "\\u" + ("0000" + chr.charCodeAt(0).toString(16)).substr(-4)
}); });
var compressed = str.length > 100000 ? LZString.compress(str) : lzw_encode(str); var callback = function (err) {
localforage.setItem(core.firstData.name + "_" + key, compressed, function (err) {
if (err) { if (err) {
if (errorCallback) errorCallback(err); if (errorCallback) errorCallback(err);
} }
@ -271,11 +270,21 @@ utils.prototype.setLocalForage = function (key, value, successCallback, errorCal
else if (/^save\d+$/.test(key)) core.saves.ids[parseInt(key.substring(4))] = true; else if (/^save\d+$/.test(key)) core.saves.ids[parseInt(key.substring(4))] = true;
if (successCallback) successCallback(); if (successCallback) successCallback();
} }
}); }
if (window.jsinterface && window.jsinterface.setLocalForage) {
var id = setTimeout(null);
core['__callback' + id] = callback;
window.jsinterface.setLocalForage(id, name, str);
} else {
var compressed = str.length > 100000 ? LZString.compress(str) : lzw_encode(str);
localforage.setItem(name, compressed, callback);
}
} }
utils.prototype.getLocalForage = function (key, defaultValue, successCallback, errorCallback) { utils.prototype.getLocalForage = function (key, defaultValue, successCallback, errorCallback) {
localforage.getItem(core.firstData.name + "_" + key, function (err, value) { var name = core.firstData.name + "_" + key;
var callback = function (err, value) {
if (err) { if (err) {
if (errorCallback) errorCallback(err); if (errorCallback) errorCallback(err);
} }
@ -288,11 +297,20 @@ utils.prototype.getLocalForage = function (key, defaultValue, successCallback, e
} }
successCallback(defaultValue); successCallback(defaultValue);
} }
}) };
if (window.jsinterface && window.jsinterface.getLocalForage) {
var id = setTimeout(null);
core['__callback' + id] = callback;
window.jsinterface.getLocalForage(id, name);
} else {
localforage.getItem(name, callback);
}
} }
utils.prototype.removeLocalForage = function (key, successCallback, errorCallback) { utils.prototype.removeLocalForage = function (key, successCallback, errorCallback) {
localforage.removeItem(core.firstData.name + "_" + key, function (err) { var name = core.firstData.name + "_" + key;
var callback = function (err) {
if (err) { if (err) {
if (errorCallback) errorCallback(err); if (errorCallback) errorCallback(err);
} }
@ -301,7 +319,56 @@ utils.prototype.removeLocalForage = function (key, successCallback, errorCallbac
else if (/^save\d+$/.test(key)) delete core.saves.ids[parseInt(key.substring(4))]; else if (/^save\d+$/.test(key)) delete core.saves.ids[parseInt(key.substring(4))];
if (successCallback) successCallback(); if (successCallback) successCallback();
} }
}) }
if (window.jsinterface && window.jsinterface.removeLocalForage) {
var id = setTimeout(null);
core['__callback' + id] = callback;
window.jsinterface.removeLocalForage(id, name);
} else {
localforage.removeItem(name, callback);
}
}
utils.prototype.clearLocalForage = function (callback) {
if (window.jsinterface && window.jsinterface.clearLocalForage) {
var id = setTimeout(null);
core['__callback' + id] = callback;
window.jsinterface.clearLocalForage(id);
} else {
localforage.clear(callback);
}
}
utils.prototype.iterateLocalForage = function (iter, callback) {
if (window.jsinterface && window.jsinterface.iterateLocalForage) {
var id = setTimeout(null);
core['__iter' + id] = iter;
core['__callback' + id] = callback;
window.jsinterface.iterateLocalForage(id);
} else {
localforage.iterate(iter, callback);
}
}
utils.prototype.keysLocalForage = function (callback) {
if (window.jsinterface && window.jsinterface.keysLocalForage) {
var id = setTimeout(null);
core['__callback' + id] = callback;
window.jsinterface.keysLocalForage(id);
} else {
localforage.keys(callback);
}
}
utils.prototype.lengthLocalForage = function (callback) {
if (window.jsinterface && window.jsinterface.lengthLocalForage) {
var id = setTimeout(null);
core['__callback' + id] = callback;
window.jsinterface.lengthLocalForage(id);
} else {
localforage.length(callback);
}
} }
utils.prototype.setGlobal = function (key, value) { utils.prototype.setGlobal = function (key, value) {