Skip to content

Commit 39028cb

Browse files
committed
fix: textstorage diff whitespaces issue
1 parent 9ea5b7d commit 39028cb

File tree

2 files changed

+23
-20
lines changed

2 files changed

+23
-20
lines changed

src/app/info/text/text.component.html

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ <h1 i18n>Text history</h1>
3232
<h3>
3333
<ng-container i18n>Revision {{ data.prev.revision }}</ng-container>
3434
@if (data.prev.user$ | async; as user) {
35-
<small>
36-
<app-user [user]="user" />
37-
</small>
35+
<small><app-user [user]="user" /></small>
3836
}
3937
</h3>
4038
}
@@ -48,20 +46,10 @@ <h3>
4846
<h3>
4947
<ng-container i18n>Revision {{ data.current.revision }}</ng-container>
5048
@if (data.current.user$ | async; as user) {
51-
<small>
52-
<app-user [user]="user" />
53-
</small>
49+
<small><app-user [user]="user" /></small>
5450
}
5551
</h3>
56-
<pre class="diff">@for (i of data.diff; track i) {
57-
@if (i.removed) {
58-
<del [textContent]="i.value"></del>
59-
}@if (i.added) {
60-
<ins [textContent]="i.value"></ins>
61-
}@if (!i.added && !i.removed) {
62-
{{i.value}}
63-
}
64-
}</pre>
52+
<app-info-text-diff [diff]="data.diff" />
6553
</div>
6654
}
6755
</div>

src/app/info/text/text.component.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import {AsyncPipe} from '@angular/common';
2-
import {ChangeDetectionStrategy, Component, inject, OnInit} from '@angular/core';
2+
import {ChangeDetectionStrategy, Component, inject, input, OnInit} from '@angular/core';
33
import {ActivatedRoute, RouterLink} from '@angular/router';
44
import {APIGetTextRequest, APIUser} from '@grpc/spec.pb';
55
import {TextClient} from '@grpc/spec.pbsc';
66
import {PageEnvService} from '@services/page-env.service';
77
import {UserService} from '@services/user';
88
import * as JsDiff from 'diff';
9-
import {combineLatest, EMPTY, Observable, of} from 'rxjs';
9+
import {combineLatest, EMPTY, Observable} from 'rxjs';
1010
import {catchError, debounceTime, distinctUntilChanged, map, switchMap} from 'rxjs/operators';
1111

1212
import {ToastsService} from '../../toasts/toasts.service';
@@ -37,7 +37,22 @@ interface InfoText {
3737

3838
@Component({
3939
changeDetection: ChangeDetectionStrategy.OnPush,
40-
imports: [RouterLink, UserComponent, AsyncPipe],
40+
imports: [],
41+
selector: 'app-info-text-diff',
42+
template:
43+
`<pre class="diff">@for (i of diff(); track i) {` +
44+
`@if (i.removed) {<del>{{i.value}}</del>}` +
45+
`@if (i.added) {<ins>{{i.value}}</ins>}` +
46+
`@if (!i.added && !i.removed) {{{i.value}}}` +
47+
`}</pre>`,
48+
})
49+
export class InfoTextDiffComponent {
50+
readonly diff = input.required<Diff[]>();
51+
}
52+
53+
@Component({
54+
changeDetection: ChangeDetectionStrategy.OnPush,
55+
imports: [RouterLink, UserComponent, AsyncPipe, InfoTextDiffComponent],
4156
selector: 'app-info-text',
4257
templateUrl: './text.component.html',
4358
})
@@ -78,7 +93,7 @@ export class InfoTextComponent implements OnInit {
7893
? {
7994
revision: response.current.revision,
8095
text: response.current.text,
81-
user$: response.current.userId ? this.#userService.getUser$(response.current.userId) : of(null),
96+
user$: this.#userService.getUser$(response.current.userId),
8297
}
8398
: null,
8499
diff: JsDiff.diffChars(response.prev?.text ? response.prev.text : '', response.current?.text ?? '') as Diff[],
@@ -93,7 +108,7 @@ export class InfoTextComponent implements OnInit {
93108
? {
94109
revision: response.prev.revision,
95110
text: response.prev.text,
96-
user$: response.prev.userId ? this.#userService.getUser$(response.prev.userId) : of(null),
111+
user$: this.#userService.getUser$(response.prev.userId),
97112
}
98113
: null,
99114
})),

0 commit comments

Comments
 (0)