plxnner
Version:
An elegant open-source planner for Instagram
59 lines (49 loc) • 1.48 kB
text/typescript
import { openDB } from "idb"
import UserConfig from "./userConfig.class"
export default class UserLoader {
/**
* Load users from local config
*/
static async loadUsersFromConfig() {
const userStore = useUserStore()
const rawUsers = await UserConfig.getUsersConfig()
// for each user defined in the root config.json
for await (const rawUser of rawUsers) {
await userStore.loadUser(rawUser)
}
return true
}
/**
* Load users from local forage
* (usernames are stored in local storage)
*/
static async loadUsersFromStorage() {
const userStorageStore = useUserStorageStore()
for (const tempUserReference of userStorageStore.users) {
await UserLoader.restoreUserFromStorage(tempUserReference)
}
}
/**
* Restore user from local forage
*
* @param tempUserReference
*/
static async restoreUserFromStorage(tempUserReference: ITempUserReference) {
const userStore = useUserStore()
const userStorageStore = useUserStorageStore()
const userStorage = await openDB("planner", 1)
const rawUser = await userStorage.get(
tempUserReference.platform,
tempUserReference.username
)
rawUser.platform = tempUserReference.platform
rawUser.origin = 'storage'
if (rawUser) {
await userStore.loadUser(rawUser)
} else {
// something happened,
// it no longer exists
userStorageStore.removeUserFromStorageIndex(tempUserReference)
}
}
}