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 () {
core.myconfirm("你确定要清除【全部游戏】的所有本地存档?\n此行为不可逆", function () {
var done = function () {
core.ui.drawWaiting("正在清空,请稍候...");
core.clearLocalForage(function () {
core.saves.ids = {};
core.saves.autosave.data = null;
core.saves.autosave.updated = false;
@ -2816,9 +2817,7 @@ actions.prototype._clickStorageRemove_all = function () {
core.control._updateFavoriteSaves();
core.removeLocalStorage('saveIndex');
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) {
var indexes = {};
localforage.keys(function (err, keys) {
core.keysLocalForage(function (err, keys) {
if (err) {
main.log(err);
return callback(indexes);

View File

@ -257,12 +257,11 @@ utils.prototype.setLocalForage = function (key, value, successCallback, errorCal
return;
}
// Save to localforage
var name = core.firstData.name + "_" + key;
var str = JSON.stringify(value).replace(/[\u007F-\uFFFF]/g, function (chr) {
return "\\u" + ("0000" + chr.charCodeAt(0).toString(16)).substr(-4)
});
var compressed = str.length > 100000 ? LZString.compress(str) : lzw_encode(str);
localforage.setItem(core.firstData.name + "_" + key, compressed, function (err) {
var callback = function (err) {
if (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;
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) {
localforage.getItem(core.firstData.name + "_" + key, function (err, value) {
var name = core.firstData.name + "_" + key;
var callback = function (err, value) {
if (err) {
if (errorCallback) errorCallback(err);
}
@ -288,11 +297,20 @@ utils.prototype.getLocalForage = function (key, defaultValue, successCallback, e
}
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) {
localforage.removeItem(core.firstData.name + "_" + key, function (err) {
var name = core.firstData.name + "_" + key;
var callback = function (err) {
if (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))];
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) {