2023-06-10 06:32:34 +12:00
|
|
|
import db from "./db";
|
2022-12-27 15:27:07 +13:00
|
|
|
import session from "./Session";
|
2022-03-04 10:52:07 +13:00
|
|
|
|
|
|
|
class UserManager {
|
2023-06-14 00:02:54 +12:00
|
|
|
constructor(dbImpl) {
|
|
|
|
this.db = dbImpl;
|
2023-05-25 07:36:01 +12:00
|
|
|
}
|
|
|
|
|
2022-03-04 10:52:07 +13:00
|
|
|
async all() {
|
2023-05-25 07:36:01 +12:00
|
|
|
const users = await this.db.users.toArray();
|
2022-12-27 15:27:07 +13:00
|
|
|
if (session.exists()) {
|
|
|
|
users.unshift(this.localUser());
|
2022-03-04 10:52:07 +13:00
|
|
|
}
|
2022-12-27 15:27:07 +13:00
|
|
|
return users;
|
2023-05-24 07:13:01 +12:00
|
|
|
}
|
2022-03-04 10:52:07 +13:00
|
|
|
|
|
|
|
async get(baseUrl) {
|
2023-01-05 16:47:12 +13:00
|
|
|
if (session.exists() && baseUrl === config.base_url) {
|
2022-12-27 15:27:07 +13:00
|
|
|
return this.localUser();
|
2022-03-04 10:52:07 +13:00
|
|
|
}
|
2023-05-25 07:36:01 +12:00
|
|
|
return this.db.users.get(baseUrl);
|
2023-05-24 07:13:01 +12:00
|
|
|
}
|
2022-03-04 10:52:07 +13:00
|
|
|
|
|
|
|
async save(user) {
|
2023-01-05 16:47:12 +13:00
|
|
|
if (session.exists() && user.baseUrl === config.base_url) {
|
2022-12-27 15:27:07 +13:00
|
|
|
return;
|
2022-03-04 10:52:07 +13:00
|
|
|
}
|
2023-05-25 07:36:01 +12:00
|
|
|
await this.db.users.put(user);
|
2023-05-24 07:13:01 +12:00
|
|
|
}
|
2022-03-04 10:52:07 +13:00
|
|
|
|
|
|
|
async delete(baseUrl) {
|
2023-01-05 16:47:12 +13:00
|
|
|
if (session.exists() && baseUrl === config.base_url) {
|
2022-12-27 15:27:07 +13:00
|
|
|
return;
|
2022-03-04 10:52:07 +13:00
|
|
|
}
|
2023-05-25 07:36:01 +12:00
|
|
|
await this.db.users.delete(baseUrl);
|
2023-05-24 07:13:01 +12:00
|
|
|
}
|
2022-12-27 15:27:07 +13:00
|
|
|
|
|
|
|
localUser() {
|
|
|
|
if (!session.exists()) {
|
|
|
|
return null;
|
|
|
|
}
|
2023-05-24 07:13:01 +12:00
|
|
|
return {
|
2023-01-05 16:47:12 +13:00
|
|
|
baseUrl: config.base_url,
|
2022-12-27 15:27:07 +13:00
|
|
|
username: session.username(),
|
|
|
|
token: session.token(), // Not "password"!
|
2023-05-24 07:13:01 +12:00
|
|
|
};
|
|
|
|
}
|
2022-03-04 10:52:07 +13:00
|
|
|
}
|
|
|
|
|
2023-06-10 06:32:34 +12:00
|
|
|
export default new UserManager(db());
|