[WEB-4761] fix: resolve circular import between IssueService and local db (#7653)
- Move local db import to dynamic import to break circular dependency
This commit is contained in:
parent
cf7b288f93
commit
6d1275d58c
1 changed files with 15 additions and 12 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
// types
|
// plane imports
|
||||||
import { API_BASE_URL } from "@plane/constants";
|
import { API_BASE_URL } from "@plane/constants";
|
||||||
import {
|
import {
|
||||||
EIssueServiceType,
|
EIssueServiceType,
|
||||||
|
|
@ -12,12 +12,8 @@ import {
|
||||||
type TIssuesResponse,
|
type TIssuesResponse,
|
||||||
type TIssueSubIssues,
|
type TIssueSubIssues,
|
||||||
} from "@plane/types";
|
} from "@plane/types";
|
||||||
// helpers
|
|
||||||
import { getIssuesShouldFallbackToServer } from "@plane/utils";
|
import { getIssuesShouldFallbackToServer } from "@plane/utils";
|
||||||
import { persistence } from "@/local-db/storage.sqlite";
|
|
||||||
// services
|
// services
|
||||||
|
|
||||||
import { addIssuesBulk, deleteIssueFromLocal, updateIssue } from "@/local-db/utils/load-issues";
|
|
||||||
import { APIService } from "@/services/api.service";
|
import { APIService } from "@/services/api.service";
|
||||||
|
|
||||||
export class IssueService extends APIService {
|
export class IssueService extends APIService {
|
||||||
|
|
@ -85,7 +81,7 @@ export class IssueService extends APIService {
|
||||||
if (getIssuesShouldFallbackToServer(queries) || this.serviceType !== EIssueServiceType.ISSUES) {
|
if (getIssuesShouldFallbackToServer(queries) || this.serviceType !== EIssueServiceType.ISSUES) {
|
||||||
return await this.getIssuesFromServer(workspaceSlug, projectId, queries, config);
|
return await this.getIssuesFromServer(workspaceSlug, projectId, queries, config);
|
||||||
}
|
}
|
||||||
|
const { persistence } = await import("@/local-db/storage.sqlite");
|
||||||
const response = await persistence.getIssues(workspaceSlug, projectId, queries, config);
|
const response = await persistence.getIssues(workspaceSlug, projectId, queries, config);
|
||||||
return response as TIssuesResponse;
|
return response as TIssuesResponse;
|
||||||
}
|
}
|
||||||
|
|
@ -118,9 +114,10 @@ export class IssueService extends APIService {
|
||||||
return this.get(`/api/workspaces/${workspaceSlug}/projects/${projectId}/${this.serviceType}/${issueId}/`, {
|
return this.get(`/api/workspaces/${workspaceSlug}/projects/${projectId}/${this.serviceType}/${issueId}/`, {
|
||||||
params: queries,
|
params: queries,
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then(async (response) => {
|
||||||
// skip issue update when the service type is epic
|
// skip issue update when the service type is epic
|
||||||
if (response.data && this.serviceType === EIssueServiceType.ISSUES) {
|
if (response.data && this.serviceType === EIssueServiceType.ISSUES) {
|
||||||
|
const { updateIssue } = await import("@/local-db/utils/load-issues");
|
||||||
updateIssue({ ...response.data, is_local_update: 1 });
|
updateIssue({ ...response.data, is_local_update: 1 });
|
||||||
}
|
}
|
||||||
// add is_epic flag when the service type is epic
|
// add is_epic flag when the service type is epic
|
||||||
|
|
@ -138,8 +135,9 @@ export class IssueService extends APIService {
|
||||||
return this.get(`/api/workspaces/${workspaceSlug}/projects/${projectId}/${this.serviceType}/list/`, {
|
return this.get(`/api/workspaces/${workspaceSlug}/projects/${projectId}/${this.serviceType}/list/`, {
|
||||||
params: { issues: issueIds.join(",") },
|
params: { issues: issueIds.join(",") },
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then(async (response) => {
|
||||||
if (response?.data && Array.isArray(response?.data) && this.serviceType === EIssueServiceType.ISSUES) {
|
if (response?.data && Array.isArray(response?.data) && this.serviceType === EIssueServiceType.ISSUES) {
|
||||||
|
const { addIssuesBulk } = await import("@/local-db/utils/load-issues");
|
||||||
addIssuesBulk(response.data);
|
addIssuesBulk(response.data);
|
||||||
}
|
}
|
||||||
return response?.data;
|
return response?.data;
|
||||||
|
|
@ -246,6 +244,7 @@ export class IssueService extends APIService {
|
||||||
|
|
||||||
async deleteIssue(workspaceSlug: string, projectId: string, issuesId: string): Promise<any> {
|
async deleteIssue(workspaceSlug: string, projectId: string, issuesId: string): Promise<any> {
|
||||||
if (this.serviceType === EIssueServiceType.ISSUES) {
|
if (this.serviceType === EIssueServiceType.ISSUES) {
|
||||||
|
const { deleteIssueFromLocal } = await import("@/local-db/utils/load-issues");
|
||||||
deleteIssueFromLocal(issuesId);
|
deleteIssueFromLocal(issuesId);
|
||||||
}
|
}
|
||||||
return this.delete(`/api/workspaces/${workspaceSlug}/projects/${projectId}/${this.serviceType}/${issuesId}/`)
|
return this.delete(`/api/workspaces/${workspaceSlug}/projects/${projectId}/${this.serviceType}/${issuesId}/`)
|
||||||
|
|
@ -354,8 +353,9 @@ export class IssueService extends APIService {
|
||||||
|
|
||||||
async bulkOperations(workspaceSlug: string, projectId: string, data: TBulkOperationsPayload): Promise<any> {
|
async bulkOperations(workspaceSlug: string, projectId: string, data: TBulkOperationsPayload): Promise<any> {
|
||||||
return this.post(`/api/workspaces/${workspaceSlug}/projects/${projectId}/bulk-operation-issues/`, data)
|
return this.post(`/api/workspaces/${workspaceSlug}/projects/${projectId}/bulk-operation-issues/`, data)
|
||||||
.then((response) => {
|
.then(async (response) => {
|
||||||
if (this.serviceType === EIssueServiceType.ISSUES) {
|
if (this.serviceType === EIssueServiceType.ISSUES) {
|
||||||
|
const { persistence } = await import("@/local-db/storage.sqlite");
|
||||||
persistence.syncIssues(projectId);
|
persistence.syncIssues(projectId);
|
||||||
}
|
}
|
||||||
return response?.data;
|
return response?.data;
|
||||||
|
|
@ -373,8 +373,9 @@ export class IssueService extends APIService {
|
||||||
}
|
}
|
||||||
): Promise<any> {
|
): Promise<any> {
|
||||||
return this.delete(`/api/workspaces/${workspaceSlug}/projects/${projectId}/bulk-delete-issues/`, data)
|
return this.delete(`/api/workspaces/${workspaceSlug}/projects/${projectId}/bulk-delete-issues/`, data)
|
||||||
.then((response) => {
|
.then(async (response) => {
|
||||||
if (this.serviceType === EIssueServiceType.ISSUES) {
|
if (this.serviceType === EIssueServiceType.ISSUES) {
|
||||||
|
const { persistence } = await import("@/local-db/storage.sqlite");
|
||||||
persistence.syncIssues(projectId);
|
persistence.syncIssues(projectId);
|
||||||
}
|
}
|
||||||
return response?.data;
|
return response?.data;
|
||||||
|
|
@ -394,8 +395,9 @@ export class IssueService extends APIService {
|
||||||
archived_at: string;
|
archived_at: string;
|
||||||
}> {
|
}> {
|
||||||
return this.post(`/api/workspaces/${workspaceSlug}/projects/${projectId}/bulk-archive-issues/`, data)
|
return this.post(`/api/workspaces/${workspaceSlug}/projects/${projectId}/bulk-archive-issues/`, data)
|
||||||
.then((response) => {
|
.then(async (response) => {
|
||||||
if (this.serviceType === EIssueServiceType.ISSUES) {
|
if (this.serviceType === EIssueServiceType.ISSUES) {
|
||||||
|
const { persistence } = await import("@/local-db/storage.sqlite");
|
||||||
persistence.syncIssues(projectId);
|
persistence.syncIssues(projectId);
|
||||||
}
|
}
|
||||||
return response?.data;
|
return response?.data;
|
||||||
|
|
@ -476,9 +478,10 @@ export class IssueService extends APIService {
|
||||||
return this.get(`/api/workspaces/${workspaceSlug}/work-items/${project_identifier}-${issue_sequence}/`, {
|
return this.get(`/api/workspaces/${workspaceSlug}/work-items/${project_identifier}-${issue_sequence}/`, {
|
||||||
params: queries,
|
params: queries,
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then(async (response) => {
|
||||||
// skip issue update when the service type is epic
|
// skip issue update when the service type is epic
|
||||||
if (response.data && this.serviceType === EIssueServiceType.ISSUES) {
|
if (response.data && this.serviceType === EIssueServiceType.ISSUES) {
|
||||||
|
const { updateIssue } = await import("@/local-db/utils/load-issues");
|
||||||
updateIssue({ ...response.data, is_local_update: 1 });
|
updateIssue({ ...response.data, is_local_update: 1 });
|
||||||
}
|
}
|
||||||
// add is_epic flag when the service type is epic
|
// add is_epic flag when the service type is epic
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue