Add trusted links to state

This commit is contained in:
Snazzah 2021-08-30 13:07:35 +00:00 committed by GitHub
parent 0ca99ddceb
commit 4c34787ef3
3 changed files with 44 additions and 0 deletions

View file

@ -14,6 +14,7 @@ import { QueuedMessage } from "./reducers/queue";
import { SectionToggle } from "./reducers/section_toggle"; import { SectionToggle } from "./reducers/section_toggle";
import { Settings } from "./reducers/settings"; import { Settings } from "./reducers/settings";
import { SyncOptions } from "./reducers/sync"; import { SyncOptions } from "./reducers/sync";
import { TrustedLinks } from "./reducers/trusted_links";
import { Unreads } from "./reducers/unreads"; import { Unreads } from "./reducers/unreads";
export type State = { export type State = {
@ -29,6 +30,7 @@ export type State = {
lastOpened: LastOpened; lastOpened: LastOpened;
notifications: Notifications; notifications: Notifications;
sectionToggle: SectionToggle; sectionToggle: SectionToggle;
trustedLinks: TrustedLinks;
}; };
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
@ -59,6 +61,7 @@ store.subscribe(() => {
lastOpened, lastOpened,
notifications, notifications,
sectionToggle, sectionToggle,
trustedLinks,
} = store.getState() as State; } = store.getState() as State;
localForage.setItem("state", { localForage.setItem("state", {
@ -74,6 +77,7 @@ store.subscribe(() => {
lastOpened, lastOpened,
notifications, notifications,
sectionToggle, sectionToggle,
trustedLinks,
}); });
}); });

View file

@ -12,6 +12,7 @@ import { sectionToggle, SectionToggleAction } from "./section_toggle";
import { config, ConfigAction } from "./server_config"; import { config, ConfigAction } from "./server_config";
import { settings, SettingsAction } from "./settings"; import { settings, SettingsAction } from "./settings";
import { sync, SyncAction } from "./sync"; import { sync, SyncAction } from "./sync";
import { trustedLinks, TrustedLinksAction } from "./trusted_links";
import { unreads, UnreadsAction } from "./unreads"; import { unreads, UnreadsAction } from "./unreads";
export default combineReducers({ export default combineReducers({
@ -27,6 +28,7 @@ export default combineReducers({
lastOpened, lastOpened,
notifications, notifications,
sectionToggle, sectionToggle,
trustedLinks,
}); });
export type Action = export type Action =
@ -42,4 +44,5 @@ export type Action =
| LastOpenedAction | LastOpenedAction
| NotificationsAction | NotificationsAction
| SectionToggleAction | SectionToggleAction
| TrustedLinksAction
| { type: "__INIT"; state: State }; | { type: "__INIT"; state: State };

View file

@ -0,0 +1,37 @@
export interface TrustedLinks {
domains?: string[];
}
export type TrustedLinksAction =
| { type: undefined }
| {
type: "TRUSTED_LINKS_ADD_DOMAIN";
domain: string;
}
| {
type: "TRUSTED_LINKS_REMOVE_DOMAIN";
domain: string;
};
export function trustedLinks(
state = {} as TrustedLinks,
action: TrustedLinksAction,
): TrustedLinks {
switch (action.type) {
case "TRUSTED_LINKS_ADD_DOMAIN":
return {
...state,
domains: [
...(state.domains ?? []).filter((v) => v !== action.domain),
action.domain,
],
};
case "TRUSTED_LINKS_REMOVE_DOMAIN":
return {
...state,
domains: state.domains?.filter((v) => v !== action.domain),
};
default:
return state;
}
}