Introduce account preferences to remember user's previous location (#4126)

This commit is contained in:
Apoorv Mishra
2022-09-18 18:31:47 +05:30
committed by GitHub
parent b68e58fad5
commit 6502b108e3
17 changed files with 156 additions and 12 deletions

View File

@@ -22,7 +22,11 @@ import {
AllowNull,
} from "sequelize-typescript";
import { languages } from "@shared/i18n";
import { CollectionPermission } from "@shared/types";
import {
CollectionPermission,
UserPreference,
UserPreferences,
} from "@shared/types";
import { stringToColor } from "@shared/utils/color";
import env from "@server/env";
import { ValidationError } from "../errors";
@@ -54,12 +58,6 @@ export enum UserRole {
Viewer = "viewer",
}
export enum UserPreference {
RememberLastPath = "rememberLastPath",
}
export type UserPreferences = { [key in UserPreference]?: boolean };
@Scopes(() => ({
withAuthentications: {
include: [

View File

@@ -1,6 +1,6 @@
import { UserPreferences } from "@shared/types";
import env from "@server/env";
import { User } from "@server/models";
import { UserPreferences } from "@server/models/User";
type Options = {
includeDetails?: boolean;

View File

@@ -1,6 +1,8 @@
import crypto from "crypto";
import Router from "koa-router";
import { has } from "lodash";
import { Op, WhereOptions } from "sequelize";
import { UserPreference } from "@shared/types";
import { UserValidation } from "@shared/validations";
import { RateLimiterStrategy } from "@server/RateLimiter";
import userDemoter from "@server/commands/userDemoter";
@@ -17,7 +19,7 @@ import logger from "@server/logging/Logger";
import auth from "@server/middlewares/authentication";
import { rateLimiter } from "@server/middlewares/rateLimiter";
import { Event, User, Team } from "@server/models";
import { UserFlag, UserRole, UserPreference } from "@server/models/User";
import { UserFlag, UserRole } from "@server/models/User";
import { can, authorize } from "@server/policies";
import { presentUser, presentPolicies } from "@server/presenters";
import {
@@ -188,7 +190,7 @@ router.post("users.update", auth(), async (ctx) => {
}
if (preferences) {
assertKeysIn(preferences, UserPreference);
if (preferences.rememberLastPath) {
if (has(preferences, UserPreference.RememberLastPath)) {
assertBoolean(preferences.rememberLastPath);
user.setPreference(
UserPreference.RememberLastPath,