user-ui-settings.ts 989 B

1234567891011121314151617181920212223242526
  1. import type { GetServerSideProps, GetServerSidePropsContext } from 'next';
  2. import type { CrowiRequest } from '~/interfaces/crowi-request';
  3. import type { IUserUISettings } from '~/interfaces/user-ui-settings';
  4. import type { UserUISettingsDocument } from '~/server/models/user-ui-settings';
  5. import { getModelSafely } from '~/server/util/mongoose-utils';
  6. import type { UserUISettingsProps } from '../types';
  7. export const getServerSideUserUISettingsProps: GetServerSideProps<UserUISettingsProps> = async(context: GetServerSidePropsContext) => {
  8. const req = context.req as CrowiRequest;
  9. const { user } = req;
  10. // retrieve UserUISettings
  11. const UserUISettings = getModelSafely<UserUISettingsDocument>('UserUISettings');
  12. const userUISettings = user != null && UserUISettings != null
  13. ? await UserUISettings.findOne({ user: user._id }).lean() ?? undefined
  14. : req.session.uiSettings as IUserUISettings; // for guests
  15. return {
  16. props: {
  17. userUISettings,
  18. },
  19. };
  20. };