user-ui-settings.ts 826 B

123456789101112131415161718192021222324252627
  1. // eslint-disable-next-line no-restricted-imports
  2. import { AxiosResponse } from 'axios';
  3. import { debounce } from 'throttle-debounce';
  4. import { apiv3Put } from '~/client/util/apiv3-client';
  5. import { IUserUISettings } from '~/interfaces/user-ui-settings';
  6. let settingsForBulk: Partial<IUserUISettings> = {};
  7. const _putUserUISettingsInBulk = (): Promise<AxiosResponse<IUserUISettings>> => {
  8. const result = apiv3Put<IUserUISettings>('/user-ui-settings', { settings: settingsForBulk });
  9. // clear partial
  10. settingsForBulk = {};
  11. return result;
  12. };
  13. const _putUserUISettingsInBulkDebounced = debounce(1500, _putUserUISettingsInBulk);
  14. export const scheduleToPut = (settings: Partial<IUserUISettings>): void => {
  15. settingsForBulk = {
  16. ...settingsForBulk,
  17. ...settings,
  18. };
  19. _putUserUISettingsInBulkDebounced();
  20. };