]> Untitled Git - lemmy-ui.git/blob - src/shared/services/FirstLoadService.ts
Refactor first load handling
[lemmy-ui.git] / src / shared / services / FirstLoadService.ts
1 import { isBrowser } from "@utils/browser";
2
3 export class FirstLoadService {
4   #isFirstLoad: boolean;
5   static #instance: FirstLoadService;
6
7   private constructor() {
8     this.#isFirstLoad = true;
9   }
10
11   get isFirstLoad() {
12     const isFirst = this.#isFirstLoad;
13     if (isFirst) {
14       this.#isFirstLoad = false;
15     }
16
17     return isFirst;
18   }
19
20   falsify() {
21     this.#isFirstLoad = false;
22   }
23
24   static get #Instance() {
25     return this.#instance ?? (this.#instance = new this());
26   }
27
28   static get isFirstLoad() {
29     return !isBrowser() || this.#Instance.isFirstLoad;
30   }
31
32   static falsify() {
33     this.#Instance.falsify();
34   }
35 }