diff --git a/android/.idea/gradle.xml b/android/.idea/gradle.xml
index 03eadb34c..8d3708e34 100644
--- a/android/.idea/gradle.xml
+++ b/android/.idea/gradle.xml
@@ -15,7 +15,6 @@
-
diff --git a/src/app/features/issue/issue-header/issue-header.component.html b/src/app/features/issue/issue-header/issue-header.component.html
index c109387f5..6e7732cfe 100644
--- a/src/app/features/issue/issue-header/issue-header.component.html
+++ b/src/app/features/issue/issue-header/issue-header.component.html
@@ -1,21 +1,7 @@
-@if (task?.issueType === JIRA_TYPE) {
-
-}
-@if (task?.issueType === GITHUB_TYPE) {
-
-}
-@if (task?.issueType === REDMINE_TYPE) {
-
-}
-@if (task?.issueType === GITLAB_TYPE) {
-
-}
-@if (task?.issueType === CALDAV_TYPE) {
-
-}
-@if (task?.issueType === OPEN_PROJECT_TYPE) {
-
-}
-@if (task?.issueType === GITEA_TYPE) {
-
+@if (task().issueWasUpdated) {
+ update
+} @else {
+
}
+
+{{ ISSUE_PROVIDER_HUMANIZED[task().issueType!] }}
diff --git a/src/app/features/issue/issue-header/issue-header.component.scss b/src/app/features/issue/issue-header/issue-header.component.scss
index 79ff2d526..4b374974e 100644
--- a/src/app/features/issue/issue-header/issue-header.component.scss
+++ b/src/app/features/issue/issue-header/issue-header.component.scss
@@ -1,3 +1,4 @@
:host {
display: flex;
+ align-items: center;
}
diff --git a/src/app/features/issue/issue-header/issue-header.component.ts b/src/app/features/issue/issue-header/issue-header.component.ts
index f28a5d180..2e6b8c1e6 100644
--- a/src/app/features/issue/issue-header/issue-header.component.ts
+++ b/src/app/features/issue/issue-header/issue-header.component.ts
@@ -1,50 +1,19 @@
-import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
+import { ChangeDetectionStrategy, Component, input } from '@angular/core';
import { TaskWithSubTasks } from '../../tasks/task.model';
-import {
- CALDAV_TYPE,
- GITEA_TYPE,
- GITHUB_TYPE,
- GITLAB_TYPE,
- REDMINE_TYPE,
- JIRA_TYPE,
- OPEN_PROJECT_TYPE,
-} from '../issue.const';
-import { JiraIssueHeaderComponent } from '../providers/jira/jira-issue/jira-issue-header/jira-issue-header.component';
-import { GithubIssueHeaderComponent } from '../providers/github/github-issue/github-issue-header/github-issue-header.component';
-import { RedmineIssueHeaderComponent } from '../providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component';
-import { GitlabIssueHeaderComponent } from '../providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component';
-import { CaldavIssueHeaderComponent } from '../providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component';
-import { OpenProjectIssueHeaderComponent } from '../providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component';
-import { GiteaIssueHeaderComponent } from '../providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component';
+import { ISSUE_PROVIDER_HUMANIZED, ISSUE_PROVIDER_ICON_MAP } from '../issue.const';
+import { MatIcon } from '@angular/material/icon';
+import { CommonModule } from '@angular/common';
@Component({
selector: 'issue-header',
templateUrl: './issue-header.component.html',
styleUrls: ['./issue-header.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [
- JiraIssueHeaderComponent,
- GithubIssueHeaderComponent,
- RedmineIssueHeaderComponent,
- GitlabIssueHeaderComponent,
- CaldavIssueHeaderComponent,
- OpenProjectIssueHeaderComponent,
- GiteaIssueHeaderComponent,
- ],
+ imports: [CommonModule, MatIcon],
})
export class IssueHeaderComponent {
- // TODO: Skipped for migration because:
- // This input is used in a control flow expression (e.g. `@if` or `*ngIf`)
- // and migrating would break narrowing currently.
- @Input() task?: TaskWithSubTasks;
+ task = input.required();
- readonly GITLAB_TYPE: string = GITLAB_TYPE;
- readonly GITHUB_TYPE: string = GITHUB_TYPE;
- readonly REDMINE_TYPE: string = REDMINE_TYPE;
- readonly JIRA_TYPE: string = JIRA_TYPE;
- readonly CALDAV_TYPE: string = CALDAV_TYPE;
- readonly OPEN_PROJECT_TYPE: string = OPEN_PROJECT_TYPE;
- readonly GITEA_TYPE: string = GITEA_TYPE;
-
- constructor() {}
+ readonly ISSUE_PROVIDER_ICON_MAP = ISSUE_PROVIDER_ICON_MAP;
+ readonly ISSUE_PROVIDER_HUMANIZED = ISSUE_PROVIDER_HUMANIZED;
}
diff --git a/src/app/features/issue/providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component.html b/src/app/features/issue/providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component.html
deleted file mode 100644
index cd7208974..000000000
--- a/src/app/features/issue/providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component.html
+++ /dev/null
@@ -1,15 +0,0 @@
-@if (task()?.issueWasUpdated) {
- update
-
-}
-@if (!task()?.issueWasUpdated) {
-
-
-}
-Caldav
diff --git a/src/app/features/issue/providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component.scss b/src/app/features/issue/providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/app/features/issue/providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component.ts b/src/app/features/issue/providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component.ts
deleted file mode 100644
index 7c6fdc878..000000000
--- a/src/app/features/issue/providers/caldav/caldav-issue/caldav-issue-header/caldav-issue-header.component.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ChangeDetectionStrategy, Component, input } from '@angular/core';
-import { T } from 'src/app/t.const';
-import { TaskWithSubTasks } from 'src/app/features/tasks/task.model';
-import { MatIcon } from '@angular/material/icon';
-
-@Component({
- selector: 'caldav-issue-header',
- templateUrl: './caldav-issue-header.component.html',
- styleUrls: ['./caldav-issue-header.component.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [MatIcon],
-})
-export class CaldavIssueHeaderComponent {
- T: typeof T = T;
- public readonly task = input();
-
- constructor() {}
-}
diff --git a/src/app/features/issue/providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component.html b/src/app/features/issue/providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component.html
deleted file mode 100644
index 8c822b386..000000000
--- a/src/app/features/issue/providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component.html
+++ /dev/null
@@ -1,15 +0,0 @@
-@if (task()?.issueWasUpdated) {
- update
-
-}
-@if (!task()?.issueWasUpdated) {
-
-
-}
-Gitea
diff --git a/src/app/features/issue/providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component.scss b/src/app/features/issue/providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/app/features/issue/providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component.ts b/src/app/features/issue/providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component.ts
deleted file mode 100644
index abf93df25..000000000
--- a/src/app/features/issue/providers/gitea/gitea-issue/gitea-issue-header/gitea-issue-header.component.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ChangeDetectionStrategy, Component, input } from '@angular/core';
-import { TaskWithSubTasks } from '../../../../../tasks/task.model';
-import { T } from '../../../../../../t.const';
-import { MatIcon } from '@angular/material/icon';
-
-@Component({
- selector: 'gitea-issue-header',
- templateUrl: './gitea-issue-header.component.html',
- styleUrls: ['./gitea-issue-header.component.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [MatIcon],
-})
-export class GiteaIssueHeaderComponent {
- T: typeof T = T;
- readonly task = input();
-
- constructor() {}
-}
diff --git a/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.html b/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.html
deleted file mode 100644
index 755ef3cff..000000000
--- a/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.html
+++ /dev/null
@@ -1,15 +0,0 @@
-@if (task()?.issueWasUpdated) {
- update
-
-}
-@if (!task()?.issueWasUpdated) {
-
-
-}
-Github
diff --git a/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.scss b/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.spec.ts b/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.spec.ts
deleted file mode 100644
index 8e8e9c761..000000000
--- a/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-// import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-//
-// import { GithubIssueHeaderComponent } from './github-issue-header.component';
-//
-// describe('GithubIssueHeaderComponent', () => {
-// let component: GithubIssueHeaderComponent;
-// let fixture: ComponentFixture;
-//
-// beforeEach(async(() => {
-// TestBed.configureTestingModule({
-// declarations: [GithubIssueHeaderComponent]
-// })
-// .compileComponents();
-// }));
-//
-// beforeEach(() => {
-// fixture = TestBed.createComponent(GithubIssueHeaderComponent);
-// component = fixture.componentInstance;
-// fixture.detectChanges();
-// });
-//
-// it('should create', () => {
-// expect(component).toBeTruthy();
-// });
-// });
diff --git a/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.ts b/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.ts
deleted file mode 100644
index 3e9306521..000000000
--- a/src/app/features/issue/providers/github/github-issue/github-issue-header/github-issue-header.component.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ChangeDetectionStrategy, Component, input } from '@angular/core';
-import { TaskWithSubTasks } from '../../../../../tasks/task.model';
-import { T } from '../../../../../../t.const';
-import { MatIcon } from '@angular/material/icon';
-
-@Component({
- selector: 'github-issue-header',
- templateUrl: './github-issue-header.component.html',
- styleUrls: ['./github-issue-header.component.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [MatIcon],
-})
-export class GithubIssueHeaderComponent {
- T: typeof T = T;
- readonly task = input();
-
- constructor() {}
-}
diff --git a/src/app/features/issue/providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component.html b/src/app/features/issue/providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component.html
deleted file mode 100644
index f1f6d4991..000000000
--- a/src/app/features/issue/providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component.html
+++ /dev/null
@@ -1,15 +0,0 @@
-@if (task()?.issueWasUpdated) {
- update
-
-}
-@if (!task()?.issueWasUpdated) {
-
-
-}
-Gitlab
diff --git a/src/app/features/issue/providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component.scss b/src/app/features/issue/providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/app/features/issue/providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component.ts b/src/app/features/issue/providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component.ts
deleted file mode 100644
index 71e6bf90e..000000000
--- a/src/app/features/issue/providers/gitlab/gitlab-issue/gitlab-issue-header/gitlab-issue-header.component.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ChangeDetectionStrategy, Component, input } from '@angular/core';
-import { T } from 'src/app/t.const';
-import { TaskWithSubTasks } from 'src/app/features/tasks/task.model';
-import { MatIcon } from '@angular/material/icon';
-
-@Component({
- selector: 'gitlab-issue-header',
- templateUrl: './gitlab-issue-header.component.html',
- styleUrls: ['./gitlab-issue-header.component.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [MatIcon],
-})
-export class GitlabIssueHeaderComponent {
- T: typeof T = T;
- public readonly task = input();
-
- constructor() {}
-}
diff --git a/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.html b/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.html
deleted file mode 100644
index 1be309fea..000000000
--- a/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.html
+++ /dev/null
@@ -1,23 +0,0 @@
-@if (isOnline$ | async) {
- @if (task()?.issueWasUpdated) {
- update
-
- }
- @if (!task()?.issueWasUpdated) {
-
-
- }
-} @else {
- cloud_off
-
-}
-Jira
diff --git a/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.scss b/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.spec.ts b/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.spec.ts
deleted file mode 100644
index 3318564ff..000000000
--- a/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-// import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-//
-// import { JiraIssueHeaderComponent } from './jira-issue-header.component';
-//
-// describe('JiraIssueHeaderComponent', () => {
-// let component: JiraIssueHeaderComponent;
-// let fixture: ComponentFixture;
-//
-// beforeEach(async(() => {
-// TestBed.configureTestingModule({
-// declarations: [JiraIssueHeaderComponent]
-// })
-// .compileComponents();
-// }));
-//
-// beforeEach(() => {
-// fixture = TestBed.createComponent(JiraIssueHeaderComponent);
-// component = fixture.componentInstance;
-// fixture.detectChanges();
-// });
-//
-// it('should create', () => {
-// expect(component).toBeTruthy();
-// });
-// });
diff --git a/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.ts b/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.ts
deleted file mode 100644
index eb4a7f6e3..000000000
--- a/src/app/features/issue/providers/jira/jira-issue/jira-issue-header/jira-issue-header.component.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ChangeDetectionStrategy, Component, input } from '@angular/core';
-import { TaskWithSubTasks } from '../../../../../tasks/task.model';
-import { isOnline$ } from 'src/app/util/is-online';
-import { Observable } from 'rxjs';
-import { MatIcon } from '@angular/material/icon';
-import { MatTooltip } from '@angular/material/tooltip';
-import { AsyncPipe } from '@angular/common';
-
-@Component({
- selector: 'jira-issue-header',
- templateUrl: './jira-issue-header.component.html',
- styleUrls: ['./jira-issue-header.component.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [MatIcon, MatTooltip, AsyncPipe],
-})
-export class JiraIssueHeaderComponent {
- readonly task = input();
- isOnline$: Observable = isOnline$;
-
- constructor() {}
-}
diff --git a/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.html b/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.html
deleted file mode 100644
index f458c8943..000000000
--- a/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.html
+++ /dev/null
@@ -1,15 +0,0 @@
-@if (task()?.issueWasUpdated) {
- update
-
-}
-@if (!task()?.issueWasUpdated) {
-
-
-}
-OpenProject
diff --git a/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.scss b/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.spec.ts b/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.spec.ts
deleted file mode 100644
index f877196ed..000000000
--- a/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-// import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-//
-// import { OpenProjectIssueHeaderComponent } from './open-project-issue-header.component';
-//
-// describe('OpenProjectIssueHeaderComponent', () => {
-// let component: OpenProjectIssueHeaderComponent;
-// let fixture: ComponentFixture;
-//
-// beforeEach(async(() => {
-// TestBed.configureTestingModule({
-// declarations: [OpenProjectIssueHeaderComponent]
-// })
-// .compileComponents();
-// }));
-//
-// beforeEach(() => {
-// fixture = TestBed.createComponent(OpenProjectIssueHeaderComponent);
-// component = fixture.componentInstance;
-// fixture.detectChanges();
-// });
-//
-// it('should create', () => {
-// expect(component).toBeTruthy();
-// });
-// });
diff --git a/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.ts b/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.ts
deleted file mode 100644
index ad4fdd134..000000000
--- a/src/app/features/issue/providers/open-project/open-project-issue/open-project-issue-header/open-project-issue-header.component.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ChangeDetectionStrategy, Component, input } from '@angular/core';
-import { TaskWithSubTasks } from '../../../../../tasks/task.model';
-import { T } from '../../../../../../t.const';
-import { MatIcon } from '@angular/material/icon';
-
-@Component({
- selector: 'open-project-issue-header',
- templateUrl: './open-project-issue-header.component.html',
- styleUrls: ['./open-project-issue-header.component.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [MatIcon],
-})
-export class OpenProjectIssueHeaderComponent {
- T: typeof T = T;
- readonly task = input();
-
- constructor() {}
-}
diff --git a/src/app/features/issue/providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component.html b/src/app/features/issue/providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component.html
deleted file mode 100644
index af87bd1ed..000000000
--- a/src/app/features/issue/providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component.html
+++ /dev/null
@@ -1,15 +0,0 @@
-@if (task()?.issueWasUpdated) {
- update
-
-}
-@if (!task()?.issueWasUpdated) {
-
-
-}
-Redmine
diff --git a/src/app/features/issue/providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component.scss b/src/app/features/issue/providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component.scss
deleted file mode 100644
index e69de29bb..000000000
diff --git a/src/app/features/issue/providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component.ts b/src/app/features/issue/providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component.ts
deleted file mode 100644
index dae814cd6..000000000
--- a/src/app/features/issue/providers/redmine/redmine-issue/redmine-issue-header/redmine-issue-header.component.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import { ChangeDetectionStrategy, Component, input } from '@angular/core';
-import { TaskWithSubTasks } from '../../../../../tasks/task.model';
-import { T } from '../../../../../../t.const';
-import { MatIcon } from '@angular/material/icon';
-
-@Component({
- selector: 'redmine-issue-header',
- templateUrl: './redmine-issue-header.component.html',
- styleUrls: ['./redmine-issue-header.component.scss'],
- changeDetection: ChangeDetectionStrategy.OnPush,
- imports: [MatIcon],
-})
-export class RedmineIssueHeaderComponent {
- T: typeof T = T;
- readonly task = input();
-
- constructor() {}
-}