123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- import { sys } from "cc";
- import { PREVIEW } from "cc/env";
- import { ObjectUtil } from "../util/ObjectUtil";
- import { EncryptUtil } from "./EncryptUtil";
- import { md5 } from "./Md5";
- export module storage {
- let _key: string | null = null;
- let _iv: string | null = null;
- let _id: string = "";
- /**
- * 初始化密钥
- * @param key aes加密的key
- * @param iv aes加密的iv
- */
- export function init(key: string, iv: string) {
- _key = md5(key);
- _iv = md5(iv);
- }
- /**
- * 设置用户标识
- * @param sign
- */
- export function setUser(sign: string) {
- _id = sign;
- }
- /**
- * 存储
- * @param key 存储key
- * @param value 存储值
- * @returns
- */
- export function set(key: string, value: any) {
- key = `${key}_${_id}`;
- if (null == key) {
- console.error("存储的key不能为空");
- return;
- }
- if (!PREVIEW) {
- key = md5(key);
- }
- if (null == value) {
- console.warn("存储的值为空,则直接移除该存储");
- remove(key);
- return;
- }
- if (typeof value === 'function') {
- console.error("储存的值不能为方法");
- return;
- }
- if (typeof value === 'object') {
- try {
- if (value instanceof Map) {
- let temp = ObjectUtil.mapToObject(value)
- value = JSON.stringify(temp);
- } else {
- value = JSON.stringify(value);
- }
- }
- catch (e) {
- console.error(`解析失败,str = ${value}`);
- return;
- }
- }
- else if (typeof value === 'number') {
- value = value + "";
- }
- if (!PREVIEW && null != _key && null != _iv) {
- try {
- value = EncryptUtil.aesEncrypt(value, _key, _iv);
- }
- catch (e) {
- value = null;
- }
- }
- sys.localStorage.setItem(key, value);
- }
- /**
- * 获取
- * @param key 获取的key
- * @param defaultValue 获取的默认值
- * @returns
- */
- export function get(key: string, defaultValue?: any) {
- if (null == key) {
- console.error("存储的key不能为空");
- return;
- }
- key = `${key}_${_id}`;
- if (!PREVIEW) {
- key = md5(key);
- }
- let str: string | null = sys.localStorage.getItem(key);
- if (null != str && '' !== str && !PREVIEW && null != _key && null != _iv) {
- try {
- str = EncryptUtil.aesDecrypt(str, _key, _iv);
- }
- catch (e) {
- str = null;
- }
- }
- if (null === str) {
- return defaultValue;
- }
- if (null == defaultValue || typeof defaultValue === 'string') {
- return str;
- }
- if (typeof defaultValue === 'number') {
- return Number(str) || 0;
- }
- if (typeof defaultValue === 'boolean') {
- return "true" == str; // 不要使用Boolean("false");
- }
- if (typeof defaultValue === 'object') {
- try {
- return JSON.parse(str);
- }
- catch (e) {
- console.error("解析数据失败,str=" + str);
- return defaultValue;
- }
- }
- return str;
- }
- /**
- * 移除某个值
- * @param key 需要移除的key
- * @returns
- */
- export function remove(key: string) {
- if (null == key) {
- console.error("存储的key不能为空");
- return;
- }
- key = `${key}_${_id}`;
- if (!PREVIEW) {
- key = md5(key);
- }
- sys.localStorage.removeItem(key);
- }
- /**
- * 清空整个本地存储
- */
- export function clear() {
- sys.localStorage.clear();
- }
- }
|