replayPreferences.tsx 799 B

1234567891011121314151617181920212223242526272829303132
  1. import localStorage from 'sentry/utils/localStorage';
  2. const LOCAL_STORAGE_KEY = 'replay-config';
  3. export type ReplayPrefs = {
  4. isSkippingInactive: boolean;
  5. playbackSpeed: number;
  6. };
  7. const DEFAULT_PREFS = {
  8. isSkippingInactive: true,
  9. playbackSpeed: 1,
  10. };
  11. export interface PrefsStrategy {
  12. get: () => ReplayPrefs;
  13. set: (prefs: ReplayPrefs) => void;
  14. }
  15. export const StaticReplayPreferences: PrefsStrategy = {
  16. get: (): ReplayPrefs => DEFAULT_PREFS,
  17. set: () => {},
  18. };
  19. export const LocalStorageReplayPreferences: PrefsStrategy = {
  20. get: (): ReplayPrefs => {
  21. const parsed = JSON.parse(localStorage.getItem(LOCAL_STORAGE_KEY) || '{}');
  22. return {...DEFAULT_PREFS, ...parsed};
  23. },
  24. set: (prefs: ReplayPrefs) =>
  25. localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(prefs)),
  26. };