refactor: deduplicate MemoryType and ReactionType enums (#11479)

* refactor: deduplicate memorytype and reactiontype enums

* fix mobile
This commit is contained in:
Michel Heusschen 2024-07-31 19:08:31 +02:00 committed by GitHub
parent 281cfc95a4
commit b73f7fe16f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 14 additions and 27 deletions

View file

@ -43,7 +43,7 @@ class Activity {
assetId = dto.assetId, assetId = dto.assetId,
comment = dto.comment, comment = dto.comment,
createdAt = dto.createdAt, createdAt = dto.createdAt,
type = dto.type == ActivityResponseDtoTypeEnum.comment type = dto.type == ReactionType.comment
? ActivityType.comment ? ActivityType.comment
: ActivityType.like, : ActivityType.like,
user = User.fromSimpleUserDto(dto.user); user = User.fromSimpleUserDto(dto.user);

Binary file not shown.

Binary file not shown.

View file

@ -7216,11 +7216,7 @@
"type": "string" "type": "string"
}, },
"type": { "type": {
"enum": [ "$ref": "#/components/schemas/ReactionType"
"comment",
"like"
],
"type": "string"
}, },
"user": { "user": {
"$ref": "#/components/schemas/UserResponseDto" "$ref": "#/components/schemas/UserResponseDto"
@ -9311,10 +9307,7 @@
"type": "string" "type": "string"
}, },
"type": { "type": {
"enum": [ "$ref": "#/components/schemas/MemoryType"
"on_this_day"
],
"type": "string"
}, },
"updatedAt": { "updatedAt": {
"format": "date-time", "format": "date-time",

View file

@ -26,7 +26,7 @@ export type ActivityResponseDto = {
comment?: string | null; comment?: string | null;
createdAt: string; createdAt: string;
id: string; id: string;
"type": Type; "type": ReactionType;
user: UserResponseDto; user: UserResponseDto;
}; };
export type ActivityCreateDto = { export type ActivityCreateDto = {
@ -572,7 +572,7 @@ export type MemoryResponseDto = {
memoryAt: string; memoryAt: string;
ownerId: string; ownerId: string;
seenAt?: string; seenAt?: string;
"type": Type2; "type": MemoryType;
updatedAt: string; updatedAt: string;
}; };
export type MemoryCreateDto = { export type MemoryCreateDto = {
@ -3065,10 +3065,6 @@ export enum ReactionType {
Comment = "comment", Comment = "comment",
Like = "like" Like = "like"
} }
export enum Type {
Comment = "comment",
Like = "like"
}
export enum UserAvatarColor { export enum UserAvatarColor {
Primary = "primary", Primary = "primary",
Pink = "pink", Pink = "pink",
@ -3164,9 +3160,6 @@ export enum MapTheme {
Light = "light", Light = "light",
Dark = "dark" Dark = "dark"
} }
export enum Type2 {
OnThisDay = "on_this_day"
}
export enum MemoryType { export enum MemoryType {
OnThisDay = "on_this_day" OnThisDay = "on_this_day"
} }

View file

@ -19,6 +19,7 @@ export type MaybeDuplicate<T> = { duplicate: boolean; value: T };
export class ActivityResponseDto { export class ActivityResponseDto {
id!: string; id!: string;
createdAt!: Date; createdAt!: Date;
@ApiProperty({ enumName: 'ReactionType', enum: ReactionType })
type!: ReactionType; type!: ReactionType;
user!: UserResponseDto; user!: UserResponseDto;
assetId!: string | null; assetId!: string | null;
@ -53,7 +54,7 @@ export class ActivitySearchDto extends ActivityDto {
userId?: string; userId?: string;
} }
const isComment = (dto: ActivityCreateDto) => dto.type === 'comment'; const isComment = (dto: ActivityCreateDto) => dto.type === ReactionType.COMMENT;
export class ActivityCreateDto extends ActivityDto { export class ActivityCreateDto extends ActivityDto {
@IsEnum(ReactionType) @IsEnum(ReactionType)

View file

@ -61,6 +61,7 @@ export class MemoryResponseDto {
memoryAt!: Date; memoryAt!: Date;
seenAt?: Date; seenAt?: Date;
ownerId!: string; ownerId!: string;
@ApiProperty({ enumName: 'MemoryType', enum: MemoryType })
type!: MemoryType; type!: MemoryType;
data!: MemoryData; data!: MemoryData;
isSaved!: boolean; isSaved!: boolean;

View file

@ -8,7 +8,6 @@
import { isTenMinutesApart } from '$lib/utils/timesince'; import { isTenMinutesApart } from '$lib/utils/timesince';
import { import {
ReactionType, ReactionType,
Type,
createActivity, createActivity,
deleteActivity, deleteActivity,
getActivities, getActivities,
@ -111,15 +110,15 @@
await deleteActivity({ id: reaction.id }); await deleteActivity({ id: reaction.id });
reactions.splice(index, 1); reactions.splice(index, 1);
reactions = reactions; reactions = reactions;
if (isLiked && reaction.type === 'like' && reaction.id == isLiked.id) { if (isLiked && reaction.type === ReactionType.Like && reaction.id == isLiked.id) {
dispatch('deleteLike'); dispatch('deleteLike');
} else { } else {
dispatch('deleteComment'); dispatch('deleteComment');
} }
const deleteMessages: Record<Type, string> = { const deleteMessages: Record<ReactionType, string> = {
[Type.Comment]: $t('comment_deleted'), [ReactionType.Comment]: $t('comment_deleted'),
[Type.Like]: $t('like_deleted'), [ReactionType.Like]: $t('like_deleted'),
}; };
notificationController.show({ notificationController.show({
message: deleteMessages[reaction.type], message: deleteMessages[reaction.type],
@ -172,7 +171,7 @@
style="height: {divHeight}px;padding-bottom: {chatHeight}px" style="height: {divHeight}px;padding-bottom: {chatHeight}px"
> >
{#each reactions as reaction, index (reaction.id)} {#each reactions as reaction, index (reaction.id)}
{#if reaction.type === 'comment'} {#if reaction.type === ReactionType.Comment}
<div class="flex dark:bg-gray-800 bg-gray-200 py-3 pl-3 mt-3 rounded-lg gap-4 justify-start"> <div class="flex dark:bg-gray-800 bg-gray-200 py-3 pl-3 mt-3 rounded-lg gap-4 justify-start">
<div class="flex items-center"> <div class="flex items-center">
<UserAvatar user={reaction.user} size="sm" /> <UserAvatar user={reaction.user} size="sm" />
@ -216,7 +215,7 @@
{timeSince(luxon.DateTime.fromISO(reaction.createdAt, { locale: $locale }))} {timeSince(luxon.DateTime.fromISO(reaction.createdAt, { locale: $locale }))}
</div> </div>
{/if} {/if}
{:else if reaction.type === 'like'} {:else if reaction.type === ReactionType.Like}
<div class="relative"> <div class="relative">
<div class="flex py-3 pl-3 mt-3 gap-4 items-center text-sm"> <div class="flex py-3 pl-3 mt-3 gap-4 items-center text-sm">
<div class="text-red-600"><Icon path={mdiHeart} size={20} /></div> <div class="text-red-600"><Icon path={mdiHeart} size={20} /></div>