Merge pull request #4625 from gitbutlerapp/make-branch-listing-more-reactive

feat: Integrate BranchListingService for better branch management
This commit is contained in:
Caleb Owens 2024-08-06 13:39:12 +02:00 committed by GitHub
commit 91c2e9fec7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 26 additions and 6 deletions

View File

@ -2,6 +2,7 @@ import { invoke } from '$lib/backend/ipc';
import { Branch, BranchData } from '$lib/vbranches/types';
import { plainToInstance } from 'class-transformer';
import { writable } from 'svelte/store';
import type { BranchListingService } from '$lib/branches/branchListing';
import type { ProjectMetrics } from '$lib/metrics/projectMetrics';
export class RemoteBranchService {
@ -12,6 +13,7 @@ export class RemoteBranchService {
constructor(
private projectId: string,
private branchListingService: BranchListingService,
private projectMetrics?: ProjectMetrics
) {}
@ -25,6 +27,8 @@ export class RemoteBranchService {
this.branches.set(remoteBranches);
} catch (err: any) {
this.error.set(err);
} finally {
this.branchListingService.refresh();
}
}

View File

@ -3,6 +3,7 @@ import { invoke, listen } from '$lib/backend/ipc';
import { RemoteBranchService } from '$lib/stores/remoteBranches';
import { plainToInstance } from 'class-transformer';
import { writable } from 'svelte/store';
import type { BranchListingService } from '$lib/branches/branchListing';
import type { ProjectMetrics } from '$lib/metrics/projectMetrics';
export class VirtualBranchService {
@ -21,7 +22,8 @@ export class VirtualBranchService {
constructor(
private projectId: string,
private projectMetrics: ProjectMetrics,
private remoteBranchService: RemoteBranchService
private remoteBranchService: RemoteBranchService,
private branchListingService: BranchListingService
) {}
async refresh() {
@ -69,6 +71,8 @@ export class VirtualBranchService {
this.branches.set(branches);
this.branchesError.set(undefined);
this.logMetrics(branches);
this.branchListingService.refresh();
}
private async listVirtualBranches(): Promise<VirtualBranch[]> {

View File

@ -56,7 +56,6 @@
const accessToken = $derived($user?.github_access_token);
const baseError = $derived(baseBranchService.error);
const projectError = $derived(projectService.error);
const branchListingService = $derived(new BranchListingService(projectId));
$effect.pre(() => {
setContext(HistoryService, data.historyService);
@ -69,7 +68,7 @@
setContext(CommitDragActionsFactory, data.commitDragActionsFactory);
setContext(ReorderDropzoneManagerFactory, data.reorderDropzoneManagerFactory);
setContext(RemoteBranchService, data.remoteBranchService);
setContext(BranchListingService, branchListingService);
setContext(BranchListingService, data.branchListingService);
});
let intervalId: any;

View File

@ -1,5 +1,6 @@
import { invoke } from '$lib/backend/ipc';
import { BaseBranchService } from '$lib/baseBranch/baseBranchService';
import { BranchListingService } from '$lib/branches/branchListing';
import { BranchDragActionsFactory } from '$lib/branches/dragActions.js';
import { CommitDragActionsFactory } from '$lib/commits/dragActions.js';
import { ReorderDropzoneManagerFactory } from '$lib/dragging/reorderDropzoneManager';
@ -47,9 +48,20 @@ export const load: LayoutLoad = async ({ params, parent }) => {
const historyService = new HistoryService(projectId);
const baseBranchService = new BaseBranchService(projectId);
const remoteBranchService = new RemoteBranchService(projectId, projectMetrics);
const vbranchService = new VirtualBranchService(projectId, projectMetrics, remoteBranchService);
const branchListingService = new BranchListingService(projectId);
const remoteBranchService = new RemoteBranchService(
projectId,
branchListingService,
projectMetrics
);
const vbranchService = new VirtualBranchService(
projectId,
projectMetrics,
remoteBranchService,
branchListingService
);
const branchController = new BranchController(
projectId,
@ -78,6 +90,7 @@ export const load: LayoutLoad = async ({ params, parent }) => {
// These observables are provided for convenience
branchDragActionsFactory,
commitDragActionsFactory,
reorderDropzoneManagerFactory
reorderDropzoneManagerFactory,
branchListingService
};
};