refactor: centralize git and pr store refresh
This commit is contained in:
@@ -17,10 +17,13 @@ export type SessionCreateRequest = {
|
||||
type DeleteListener = (request: SessionDeleteRequest) => void;
|
||||
type CreateListener = (request: SessionCreateRequest) => void;
|
||||
type DirectoryListener = () => void;
|
||||
type GitRefreshHint = { directory: string };
|
||||
type GitRefreshListener = (hint: GitRefreshHint) => void;
|
||||
|
||||
const deleteListeners = new Set<DeleteListener>();
|
||||
const createListeners = new Set<CreateListener>();
|
||||
const directoryListeners = new Set<DirectoryListener>();
|
||||
const gitRefreshListeners = new Set<GitRefreshListener>();
|
||||
|
||||
export const sessionEvents = {
|
||||
onDeleteRequest(listener: DeleteListener) {
|
||||
@@ -54,4 +57,16 @@ export const sessionEvents = {
|
||||
requestDirectoryDialog() {
|
||||
directoryListeners.forEach((listener) => listener());
|
||||
},
|
||||
onGitRefreshHint(listener: GitRefreshListener) {
|
||||
gitRefreshListeners.add(listener);
|
||||
return () => {
|
||||
gitRefreshListeners.delete(listener);
|
||||
};
|
||||
},
|
||||
requestGitRefresh(hint: GitRefreshHint) {
|
||||
if (!hint.directory.trim()) {
|
||||
return;
|
||||
}
|
||||
gitRefreshListeners.forEach((listener) => listener(hint));
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user