All files / src/store/features/tracker trackerActions.ts

33.33% Statements 10/30
0% Branches 0/11
0% Functions 0/5
33.33% Lines 10/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 873x 3x           3x   3x                                                                     3x               3x               3x               3x               3x                 3x  
import { createAsyncThunk } from "@reduxjs/toolkit";
import {
  QuantizeSnapSetting,
  actions as reducerActions,
  SubpatternEditorMode,
  TrackerViewType,
} from "./trackerState";
import API from "renderer/lib/api";
 
const initViewFromSaved = createAsyncThunk(
  "tracker/initView",
  async (_, thunkApi) => {
    const view = await API.settings.getString("trackerView", "roll");
    Iif (view === "tracker" || view === "roll") {
      thunkApi.dispatch(actions.setView(view));
    }
 
    const subpatternEditorMode = await API.settings.getString(
      "subpatternEditorMode",
      "script",
    );
    Iif (
      subpatternEditorMode === "script" ||
      subpatternEditorMode === "tracker"
    ) {
      thunkApi.dispatch(actions.setSubpatternEditorMode(subpatternEditorMode));
    }
 
    const metronomeEnabled = await API.settings.get("trackerMetronomeEnabled");
    Iif (typeof metronomeEnabled === "boolean") {
      thunkApi.dispatch(actions.setMetronomeEnabled(metronomeEnabled));
    }
 
    const quantizeSnap = await API.settings.get("trackerQuantizeSnap");
    Iif (
      quantizeSnap === "none" ||
      quantizeSnap === "halfbeat" ||
      quantizeSnap === "beat"
    ) {
      thunkApi.dispatch(actions.setQuantizeSnap(quantizeSnap));
    }
  },
);
 
const setViewAndSave = createAsyncThunk<void, TrackerViewType>(
  "tracker/setViewAndSave",
  async (payload, thunkApi) => {
    thunkApi.dispatch(actions.setView(payload));
    await API.settings.set("trackerView", payload);
  },
);
 
const setSubpatternEditorModeAndSave = createAsyncThunk<
  void,
  SubpatternEditorMode
>("tracker/setSubpatternEditorModeAndSave", async (payload, thunkApi) => {
  thunkApi.dispatch(actions.setSubpatternEditorMode(payload));
  await API.settings.set("subpatternEditorMode", payload);
});
 
const setMetronomeEnabledAndSave = createAsyncThunk<void, boolean>(
  "tracker/setMetronomeEnabledAndSave",
  async (payload, thunkApi) => {
    thunkApi.dispatch(actions.setMetronomeEnabled(payload));
    await API.settings.set("trackerMetronomeEnabled", payload);
  },
);
 
const setQuantizeSnapAndSave = createAsyncThunk<void, QuantizeSnapSetting>(
  "tracker/setQuantizeSnapAndSave",
  async (payload, thunkApi) => {
    thunkApi.dispatch(actions.setQuantizeSnap(payload));
    await API.settings.set("trackerQuantizeSnap", payload);
  },
);
 
const actions = {
  ...reducerActions,
  initViewFromSaved,
  setViewAndSave,
  setSubpatternEditorModeAndSave,
  setMetronomeEnabledAndSave,
  setQuantizeSnapAndSave,
};
 
export default actions;