File size: 2,103 Bytes
5f40163
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import { create } from "zustand";
import { Provider } from "#/types/settings";
import { GitRepository } from "#/types/git";

interface InitialQueryState {
  files: string[]; // base64 encoded images
  initialPrompt: string | null;
  selectedRepository: GitRepository | null;
  selectedRepositoryProvider: Provider | null;
  replayJson: string | null;
}

interface InitialQueryActions {
  addFile: (file: string) => void;
  removeFile: (index: number) => void;
  clearFiles: () => void;
  setInitialPrompt: (prompt: string) => void;
  clearInitialPrompt: () => void;
  setSelectedRepository: (repository: GitRepository | null) => void;
  clearSelectedRepository: () => void;
  setSelectedRepositoryProvider: (provider: Provider | null) => void;
  setReplayJson: (replayJson: string | null) => void;
  reset: () => void;
}

type InitialQueryStore = InitialQueryState & InitialQueryActions;

const initialState: InitialQueryState = {
  files: [],
  initialPrompt: null,
  selectedRepository: null,
  selectedRepositoryProvider: null,
  replayJson: null,
};

export const useInitialQueryStore = create<InitialQueryStore>((set) => ({
  ...initialState,

  addFile: (file: string) =>
    set((state) => ({
      files: [...state.files, file],
    })),

  removeFile: (index: number) =>
    set((state) => ({
      files: state.files.filter((_, i) => i !== index),
    })),

  clearFiles: () =>
    set(() => ({
      files: [],
    })),

  setInitialPrompt: (prompt: string) =>
    set(() => ({
      initialPrompt: prompt,
    })),

  clearInitialPrompt: () =>
    set(() => ({
      initialPrompt: null,
    })),

  setSelectedRepository: (repository: GitRepository | null) =>
    set(() => ({
      selectedRepository: repository,
    })),

  clearSelectedRepository: () =>
    set(() => ({
      selectedRepository: null,
    })),

  setSelectedRepositoryProvider: (provider: Provider | null) =>
    set(() => ({
      selectedRepositoryProvider: provider,
    })),

  setReplayJson: (replayJson: string | null) =>
    set(() => ({
      replayJson,
    })),

  reset: () => set(() => initialState),
}));