mirror of
https://github.com/stoatchat/for-legacy-web.git
synced 2026-03-07 01:15:28 +00:00
feat: add a way to toggle offline users list
This commit is contained in:
@@ -1,23 +1,21 @@
|
||||
import {
|
||||
action,
|
||||
autorun,
|
||||
computed,
|
||||
makeAutoObservable,
|
||||
ObservableSet,
|
||||
} from "mobx";
|
||||
import { action, computed, makeAutoObservable, ObservableSet } from "mobx";
|
||||
|
||||
import {
|
||||
setOfflineSkipEnabled,
|
||||
resetMemberSidebarFetched,
|
||||
} from "../../components/navigation/right/MemberSidebar";
|
||||
import Persistent from "../interfaces/Persistent";
|
||||
import Store from "../interfaces/Store";
|
||||
|
||||
/**
|
||||
* Union type of available experiments.
|
||||
*/
|
||||
export type Experiment = "dummy";
|
||||
export type Experiment = "dummy" | "offline_users";
|
||||
|
||||
/**
|
||||
* Currently active experiments.
|
||||
*/
|
||||
export const AVAILABLE_EXPERIMENTS: Experiment[] = ["dummy"];
|
||||
export const AVAILABLE_EXPERIMENTS: Experiment[] = ["dummy", "offline_users"];
|
||||
|
||||
/**
|
||||
* Definitions for experiments listed by {@link Experiment}.
|
||||
@@ -29,6 +27,11 @@ export const EXPERIMENTS: {
|
||||
title: "Dummy Experiment",
|
||||
description: "This is a dummy experiment.",
|
||||
},
|
||||
offline_users: {
|
||||
title: "Re-enable offline users in large servers (>10k members)",
|
||||
description:
|
||||
"If you can take the performance hit (for example, you're on desktop), you can re-enable offline users for big servers such as Revolt Lounge.",
|
||||
},
|
||||
};
|
||||
|
||||
export interface Data {
|
||||
@@ -62,7 +65,7 @@ export default class Experiments implements Store, Persistent<Data> {
|
||||
@action hydrate(data: Data) {
|
||||
if (data.enabled) {
|
||||
for (const experiment of data.enabled) {
|
||||
this.enabled.add(experiment as Experiment);
|
||||
this.enable(experiment as Experiment);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -80,6 +83,11 @@ export default class Experiments implements Store, Persistent<Data> {
|
||||
* @param experiment Experiment
|
||||
*/
|
||||
@action enable(experiment: Experiment) {
|
||||
if (experiment === "offline_users") {
|
||||
setOfflineSkipEnabled(false);
|
||||
resetMemberSidebarFetched();
|
||||
}
|
||||
|
||||
this.enabled.add(experiment);
|
||||
}
|
||||
|
||||
@@ -88,6 +96,8 @@ export default class Experiments implements Store, Persistent<Data> {
|
||||
* @param experiment Experiment
|
||||
*/
|
||||
@action disable(experiment: Experiment) {
|
||||
if (experiment === "offline_users") setOfflineSkipEnabled(true);
|
||||
|
||||
this.enabled.delete(experiment);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user