refactor: move project archive stuff to separate file

This commit is contained in:
Johannes Millan 2020-06-12 20:27:14 +02:00
parent baa54f372c
commit ee11f0044e
8 changed files with 43 additions and 38 deletions

View file

@ -4,14 +4,13 @@ import {TaskArchive, TaskState} from '../../features/tasks/task.model';
import {BookmarkState} from '../../features/bookmark/store/bookmark.reducer';
import {NoteState} from '../../features/note/store/note.reducer';
import {Reminder} from '../../features/reminder/reminder.model';
import {ProjectArchive} from '../../features/project/project.model';
import {MetricState} from '../../features/metric/metric.model';
import {ImprovementState} from '../../features/metric/improvement/improvement.model';
import {ObstructionState} from '../../features/metric/obstruction/obstruction.model';
import {TaskRepeatCfgState} from '../../features/task-repeat-cfg/task-repeat-cfg.model';
import {EntityState} from '@ngrx/entity';
import {TaskAttachment} from '../../features/tasks/task-attachment/task-attachment.model';
import {Action} from '@ngrx/store';
import {ProjectArchive} from '../../features/project/project-archive.model';
export interface LegacyAppBaseData {
@ -59,14 +58,17 @@ export interface LegacyAppDataComplete extends LegacyAppBaseData, LegacyAppDataF
export interface LegacyPersistenceBaseModel<T> {
appDataKey: keyof LegacyAppBaseData;
load(isSkipMigration?: boolean): Promise<T>;
save(state: T, isForce?: boolean): Promise<any>;
}
export interface LegacyPersistenceForProjectModel<S, M> {
appDataKey: keyof LegacyAppDataForProjects;
load(projectId: string): Promise<S>;
save(projectId: string, state: S, isForce?: boolean): Promise<any>;
}

View file

@ -44,7 +44,7 @@ import {Obstruction, ObstructionState} from '../../features/metric/obstruction/o
import {SnackService} from '../snack/snack.service';
import {DatabaseService} from '../persistence/database.service';
import {CompressionService} from '../compression/compression.service';
import {ExportedProject, ProjectArchive, ProjectArchivedRelatedData} from '../../features/project/project.model';
import {ExportedProject, ProjectArchive, ProjectArchivedRelatedData} from '../../features/project/project-archive.model';
import {DEFAULT_PROJECT_ID} from '../../features/project/project.const';
import {Action} from '@ngrx/store';
import {Injectable} from '@angular/core';

View file

@ -31,10 +31,10 @@ import {DatabaseService} from './database.service';
import {DEFAULT_PROJECT_ID} from '../../features/project/project.const';
import {
ExportedProject,
Project,
ProjectArchive,
ProjectArchivedRelatedData
} from '../../features/project/project.model';
} from '../../features/project/project-archive.model';
import {Project} from '../../features/project/project.model';
import {CompressionService} from '../compression/compression.service';
import {PersistenceBaseEntityModel, PersistenceBaseModel, PersistenceForProjectModel} from './persistence.model';
import {Metric, MetricState} from '../../features/metric/metric.model';

View file

@ -0,0 +1,30 @@
import {NoteState} from '../note/store/note.reducer';
import {BookmarkState} from '../bookmark/store/bookmark.reducer';
import {Task, TaskState} from '../tasks/task.model';
import {EntityState} from '@ngrx/entity';
import {TaskAttachment} from '../tasks/task-attachment/task-attachment.model';
import {Tag} from '../tag/tag.model';
import {MetricState} from '../metric/metric.model';
import {ImprovementState} from '../metric/improvement/improvement.model';
import {ObstructionState} from '../metric/obstruction/obstruction.model';
import {Project} from './project.model';
export interface ProjectArchivedRelatedData {
note?: NoteState;
bookmark?: BookmarkState;
task?: TaskState;
taskArchive?: EntityState<Task>;
taskAttachment?: EntityState<TaskAttachment>;
taskTag?: EntityState<Tag>;
metric?: MetricState;
improvement?: ImprovementState;
obstruction?: ObstructionState;
}
export interface ExportedProject extends Project {
relatedModels: ProjectArchivedRelatedData;
}
export interface ProjectArchive {
[key: string]: string;
}

View file

@ -1,13 +1,4 @@
import {IssueIntegrationCfgs, IssueProviderKey} from '../issue/issue.model';
import {NoteState} from '../note/store/note.reducer';
import {BookmarkState} from '../bookmark/store/bookmark.reducer';
import {EntityState} from '@ngrx/entity';
import {Task, TaskState} from '../tasks/task.model';
import {TaskAttachment} from '../tasks/task-attachment/task-attachment.model';
import {MetricState} from '../metric/metric.model';
import {ImprovementState} from '../metric/improvement/improvement.model';
import {ObstructionState} from '../metric/obstruction/obstruction.model';
import {Tag} from '../tag/tag.model';
import {WorkContextAdvancedCfgKey, WorkContextCommon} from '../work-context/work-context.model';
export type RoundTimeOption = '5M' | 'QUARTER' | 'HALF' | 'HOUR';
@ -35,26 +26,6 @@ export interface ProjectCopy extends ProjectBasicCfg, WorkContextCommon {
export type Project = Readonly<ProjectCopy>;
export interface ProjectArchivedRelatedData {
note?: NoteState;
bookmark?: BookmarkState;
task?: TaskState;
taskArchive?: EntityState<Task>;
taskAttachment?: EntityState<TaskAttachment>;
taskTag?: EntityState<Tag>;
metric?: MetricState;
improvement?: ImprovementState;
obstruction?: ObstructionState;
}
export interface ExportedProject extends Project {
relatedModels: ProjectArchivedRelatedData;
}
export interface ProjectArchive {
[key: string]: string;
}
export type ProjectCfgFormKey = WorkContextAdvancedCfgKey | IssueProviderKey | 'basic' | 'theme';

View file

@ -1,6 +1,6 @@
import {Injectable} from '@angular/core';
import {Observable, of} from 'rxjs';
import {ExportedProject, Project} from './project.model';
import {Project} from './project.model';
import {PersistenceService} from '../../core/persistence/persistence.service';
import {select, Store} from '@ngrx/store';
import {ProjectActionTypes, UpdateProjectOrder} from './store/project.actions';
@ -28,6 +28,7 @@ import {BreakNr, BreakTime, WorkContextType} from '../work-context/work-context.
import {WorkContextService} from '../work-context/work-context.service';
import {GITHUB_TYPE, GITLAB_TYPE, JIRA_TYPE} from '../issue/issue.const';
import {GitlabCfg} from '../issue/providers/gitlab/gitlab';
import {ExportedProject} from './project-archive.model';
@Injectable({
providedIn: 'root',

View file

@ -4,7 +4,6 @@ import {TaskArchive, TaskState} from '../../features/tasks/task.model';
import {BookmarkState} from '../../features/bookmark/store/bookmark.reducer';
import {NoteState} from '../../features/note/store/note.reducer';
import {Reminder} from '../../features/reminder/reminder.model';
import {ProjectArchive} from '../../features/project/project.model';
import {MetricState} from '../../features/metric/metric.model';
import {ImprovementState} from '../../features/metric/improvement/improvement.model';
import {ObstructionState} from '../../features/metric/obstruction/obstruction.model';
@ -19,6 +18,7 @@ import {initialTagState} from '../../features/tag/store/tag.reducer';
import {initialSimpleCounterState} from '../../features/simple-counter/store/simple-counter.reducer';
import {createEmptyEntity} from '../../util/create-empty-entity';
import {initialTaskRepeatCfgState} from '../../features/task-repeat-cfg/store/task-repeat-cfg.reducer';
import {ProjectArchive} from '../../features/project/project-archive.model';
/** @deprecated */
export interface TaskAttachmentState extends EntityState<TaskAttachment> {

View file

@ -6,7 +6,7 @@ import {DialogConfirmComponent} from '../../ui/dialog-confirm/dialog-confirm.com
import {standardListAnimation} from '../../ui/animations/standard-list.ani';
import {Subscription} from 'rxjs';
import {DragulaService} from 'ng2-dragula';
import {ExportedProject, Project} from '../../features/project/project.model';
import {Project} from '../../features/project/project.model';
import {PersistenceService} from '../../core/persistence/persistence.service';
import {download} from '../../util/download';
import {SnackService} from '../../core/snack/snack.service';
@ -14,6 +14,7 @@ import {T} from '../../t.const';
import {THEME_COLOR_MAP} from '../../app.constants';
import {WorkContextService} from '../../features/work-context/work-context.service';
import {withLatestFrom} from 'rxjs/operators';
import {ExportedProject} from '../../features/project/project-archive.model';
@Component({
selector: 'project-page',