2 lines
3.0 KiB
JavaScript
2 lines
3.0 KiB
JavaScript
"use strict";const e=require("../common/vendor.js"),t=require("./constants.js"),s="bill-helper-miniapp-v1";function n(e){return JSON.parse(JSON.stringify(e))}function i(e){var s,n,i,l,o,a,c,r,u,g,d,p;const f=t.createDefaultData(),b=e||{};return{categories:{expense:Array.isArray(null==(s=b.categories)?void 0:s.expense)&&b.categories.expense.length?b.categories.expense:f.categories.expense,income:Array.isArray(null==(n=b.categories)?void 0:n.income)&&b.categories.income.length?b.categories.income:f.categories.income},accounts:Array.isArray(b.accounts)&&b.accounts.length?b.accounts:f.accounts,bills:Array.isArray(b.bills)?b.bills:f.bills,budgets:{total:Number(null==(i=b.budgets)?void 0:i.total)||f.budgets.total,categoryBudgets:(null==(l=b.budgets)?void 0:l.categoryBudgets)||f.budgets.categoryBudgets},settings:{theme:(null==(o=b.settings)?void 0:o.theme)||f.settings.theme,profile:{authorized:Boolean(null==(c=null==(a=b.settings)?void 0:a.profile)?void 0:c.authorized),nickname:(null==(u=null==(r=b.settings)?void 0:r.profile)?void 0:u.nickname)||f.settings.profile.nickname,avatarUrl:(null==(d=null==(g=b.settings)?void 0:g.profile)?void 0:d.avatarUrl)||""},lastBackupAt:(null==(p=b.settings)?void 0:p.lastBackupAt)||""}}}const l=e.reactive(i(function(){try{const n=e.index.getStorageSync(s);if(!n){const n=t.createDefaultData();return e.index.setStorageSync(s,n),n}return i(n)}catch(n){return t.createDefaultData()}}()));function o(e){l.categories.expense.splice(0,l.categories.expense.length,...e.categories.expense),l.categories.income.splice(0,l.categories.income.length,...e.categories.income),l.accounts.splice(0,l.accounts.length,...e.accounts),l.bills.splice(0,l.bills.length,...e.bills),l.budgets.total=Number(e.budgets.total)||0,l.budgets.categoryBudgets={...e.budgets.categoryBudgets},l.settings.theme=e.settings.theme,l.settings.profile={...e.settings.profile},l.settings.lastBackupAt=e.settings.lastBackupAt||""}function a(){e.index.setStorageSync(s,n(l))}exports.useAppStore=function(){return{state:l,saveBill:function(e){const t=function(e){return{id:e.id||`bill-${Date.now()}`,type:e.type||"expense",amount:Number(e.amount)||0,categoryId:e.categoryId||"",accountId:e.accountId||"",note:e.note||"",date:e.date,createdAt:e.createdAt||Date.now()}}(e),s=l.bills.findIndex((e=>e.id===t.id));-1===s?l.bills.unshift(t):l.bills.splice(s,1,t),a()},deleteBill:function(e){l.bills.splice(0,l.bills.length,...l.bills.filter((t=>t.id!==e))),a()},deleteBills:function(e){const t=new Set(e);l.bills.splice(0,l.bills.length,...l.bills.filter((e=>!t.has(e.id)))),a()},setBudgetTotal:function(e){l.budgets.total=Number(e)||0,a()},setCategoryBudget:function(e,t){l.budgets.categoryBudgets={...l.budgets.categoryBudgets,[e]:Number(t)||0},a()},setTheme:function(e){l.settings.theme=e,a()},setProfile:function(e){l.settings.profile={...l.settings.profile,...e},a()},markBackup:function(e){l.settings.lastBackupAt=e,a()},exportBackup:function(){return JSON.stringify(n(l),null,2)},importBackup:function(e){o(i(JSON.parse(e))),a()},resetAll:function(){o(t.createDefaultData()),a()}}};
|