Skip to content

Commit 5c528e8

Browse files
committed
feat: ✨ Introduce groundwork for settings page
1 parent 3974caf commit 5c528e8

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed

settings.ts

+128
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
export enum SettingType {
2+
String = "string",
3+
Boolean = "boolean",
4+
Enum = "enum",
5+
Float = "float",
6+
Integer = "integer",
7+
Code = "code",
8+
}
9+
10+
export type Setting<T = SettingType> = {
11+
id: string;
12+
title: string;
13+
description: string;
14+
type: T;
15+
value: T extends SettingType.String | SettingType.Code
16+
? string
17+
: T extends SettingType.Boolean
18+
? boolean
19+
: T extends SettingType.Float | SettingType.Integer
20+
? number
21+
: T extends SettingType.Enum
22+
? string
23+
: never;
24+
min?: T extends SettingType.Float | SettingType.Integer ? number : never;
25+
max?: T extends SettingType.Float | SettingType.Integer ? number : never;
26+
step?: T extends SettingType.Float | SettingType.Integer ? number : never;
27+
options?: T extends SettingType.Enum ? string[] : never;
28+
language?: T extends SettingType.Code ? string : never;
29+
path: SettingPages;
30+
};
31+
32+
export type Settings = Setting[];
33+
export enum SettingPages {
34+
Behaviour = "behaviour",
35+
Appearance = "appearance",
36+
Advanced = "advanced",
37+
}
38+
39+
export const getSettingsForPath = (settings: Settings, path: string) =>
40+
settings.filter((setting) => setting.path === path);
41+
42+
export const getSettingById = (settings: Settings, id: string) =>
43+
settings.find((setting) => setting.id === id);
44+
45+
export const settings: Settings = [
46+
{
47+
id: "mfm",
48+
title: "Render MFM",
49+
description: "Render Misskey-Flavoured Markdown",
50+
type: SettingType.Boolean,
51+
value: false,
52+
path: SettingPages.Behaviour,
53+
} as Setting<SettingType.Boolean>,
54+
{
55+
id: "custom-css",
56+
title: "Custom CSS",
57+
description: "Custom CSS for the UI",
58+
type: SettingType.Code,
59+
value: "",
60+
language: "css",
61+
path: SettingPages.Appearance,
62+
} as Setting<SettingType.Code>,
63+
{
64+
id: "theme",
65+
title: "Theme",
66+
description: "UI theme",
67+
type: SettingType.Enum,
68+
value: "dark",
69+
options: ["light", "dark"],
70+
path: SettingPages.Appearance,
71+
} as Setting<SettingType.Enum>,
72+
{
73+
id: "custom-emojis",
74+
title: "Render Custom Emojis",
75+
description: "Render custom emojis",
76+
type: SettingType.Boolean,
77+
value: true,
78+
path: SettingPages.Behaviour,
79+
} as Setting<SettingType.Boolean>,
80+
{
81+
id: "show-content-warning",
82+
title: "Show Content Warning",
83+
description: "Show content warnings on notes marked sensitive/spoiler",
84+
type: SettingType.Boolean,
85+
value: true,
86+
path: SettingPages.Behaviour,
87+
} as Setting<SettingType.Boolean>,
88+
{
89+
id: "popup-avatar-hover",
90+
title: "Popup Profile Hover",
91+
description: "Show profile popup when hovering over a user's avatar",
92+
type: SettingType.Boolean,
93+
value: true,
94+
path: SettingPages.Behaviour,
95+
} as Setting<SettingType.Boolean>,
96+
{
97+
id: "confirm-delete",
98+
title: "Confirm Delete",
99+
description: "Confirm before deleting a note",
100+
type: SettingType.Boolean,
101+
value: false,
102+
path: SettingPages.Behaviour,
103+
} as Setting<SettingType.Boolean>,
104+
{
105+
id: "confirm-follow",
106+
title: "Confirm Follow",
107+
description: "Confirm before following/unfollowing a user",
108+
type: SettingType.Boolean,
109+
value: false,
110+
path: SettingPages.Behaviour,
111+
} as Setting<SettingType.Boolean>,
112+
{
113+
id: "confirm-reblog",
114+
title: "Confirm Reblog",
115+
description: "Confirm before reblogging a note",
116+
type: SettingType.Boolean,
117+
value: false,
118+
path: SettingPages.Behaviour,
119+
} as Setting<SettingType.Boolean>,
120+
{
121+
id: "confirm-favourite",
122+
title: "Confirm Favourite",
123+
description: "Confirm before favouriting a note",
124+
type: SettingType.Boolean,
125+
value: false,
126+
path: SettingPages.Behaviour,
127+
} as Setting<SettingType.Boolean>,
128+
];

0 commit comments

Comments
 (0)