generated from nhcarrigan/template
feat: Multiple Features, Accessibility, Security, and UX Improvements #59
@@ -224,12 +224,11 @@ export class ActivityService {
|
||||
entityTitle = comment.manga.title;
|
||||
}
|
||||
|
||||
// Strip HTML tags and get first 100 characters of comment
|
||||
const plainText = this.stripHtml(comment.content);
|
||||
// Get first 100 characters of comment
|
||||
const commentPreview =
|
||||
plainText.length > 100
|
||||
? `${plainText.slice(0, 100)}...`
|
||||
: plainText;
|
||||
comment.content.length > 100
|
||||
? `${comment.content.slice(0, 100)}...`
|
||||
: comment.content;
|
||||
|
||||
return {
|
||||
id: `comment-${comment.id}`,
|
||||
@@ -351,11 +350,4 @@ export class ActivityService {
|
||||
return "Unknown Item";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Strip HTML tags from content for plain text preview.
|
||||
*/
|
||||
private stripHtml(html: string): string {
|
||||
return html.replace(/<[^>]*>/g, "").trim();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import { RouterLink } from '@angular/router';
|
||||
import type { Activity } from '@library/shared-types';
|
||||
import { ActivityType } from '@library/shared-types';
|
||||
import { ActivityService } from '../../services/activity.service';
|
||||
import { SanitizeService } from '../../services/sanitize.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-activity-feed',
|
||||
@@ -97,7 +98,7 @@ import { ActivityService } from '../../services/activity.service';
|
||||
{{ activity.entityTitle }}
|
||||
</a>
|
||||
</span>
|
||||
<p class="comment-preview">"{{ activity.commentPreview }}"</p>
|
||||
<div class="comment-preview" [innerHTML]="sanitizeService.sanitizeHtml(activity.commentPreview)"></div>
|
||||
</div>
|
||||
}
|
||||
@case (ActivityType.achievement) {
|
||||
@@ -360,6 +361,7 @@ import { ActivityService } from '../../services/activity.service';
|
||||
})
|
||||
export class ActivityFeedComponent implements OnInit {
|
||||
private activityService = inject(ActivityService);
|
||||
public sanitizeService = inject(SanitizeService);
|
||||
|
||||
// Make ActivityType accessible in template
|
||||
ActivityType = ActivityType;
|
||||
|
||||
Reference in New Issue
Block a user