// eslint-disable-next-line no-restricted-imports import { AxiosResponse } from 'axios'; import { debounce } from 'throttle-debounce'; import { apiv3Put } from '~/client/util/apiv3-client'; import { IUserUISettings } from '~/interfaces/user-ui-settings'; let settingsForBulk: Partial = {}; const _putUserUISettingsInBulk = (): Promise> => { const result = apiv3Put('/user-ui-settings', { settings: settingsForBulk }); // clear partial settingsForBulk = {}; return result; }; const _putUserUISettingsInBulkDebounced = debounce(1500, _putUserUISettingsInBulk); type ScheduleToPutFunction = (settings: Partial) => Promise>; const scheduleToPut: ScheduleToPutFunction = (settings: Partial): Promise> => { settingsForBulk = { ...settingsForBulk, ...settings, }; return _putUserUISettingsInBulkDebounced(); }; type UserUISettingsUtil = { scheduleToPut: ScheduleToPutFunction | (() => void), } export const useUserUISettings = (): UserUISettingsUtil => { return { scheduleToPut, }; };