Translate track search publishing type and status
This commit is contained in:
@@ -154,10 +154,10 @@
|
||||
"downloaded": "Downloaded"
|
||||
}
|
||||
},
|
||||
"value_one": "{{count}} chapter",
|
||||
"value_other": "{{count}} chapters",
|
||||
"title_one": "Chapter",
|
||||
"title_other": "Chapters"
|
||||
"title_other": "Chapters",
|
||||
"value_one": "{{count}} chapter",
|
||||
"value_other": "{{count}} chapters"
|
||||
},
|
||||
"download": {
|
||||
"queue": {
|
||||
@@ -1537,6 +1537,27 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"publishing": {
|
||||
"status": {
|
||||
"cancelled": "$(manga.status.cancelled)",
|
||||
"currently_publishing": "Currently publishing",
|
||||
"finished": "$t(global.label.finished)",
|
||||
"hiatus": "$(manga.status.hiatus)",
|
||||
"not_yet_published": "Not yet published",
|
||||
"not_yet_released": "Not yet released",
|
||||
"releasing": "Releasing"
|
||||
},
|
||||
"type": {
|
||||
"doujinshi": "Doujinshi",
|
||||
"manga": "$t(manga.title_one)",
|
||||
"manhua": "$t(manga.type.manhwa)",
|
||||
"manhwa": "$t(manga.type.manhwa)",
|
||||
"novel": "Novel",
|
||||
"oel": "OEL",
|
||||
"one_shot": "Oneshot",
|
||||
"unknown": "$t(global.label.unknown)"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"dialog": {
|
||||
"title": {
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
*/
|
||||
|
||||
import { SxProps, Theme } from '@mui/material/styles';
|
||||
import { PublishingStatus, PublishingType } from '@/modules/tracker/Tracker.types.ts';
|
||||
import { TranslationKey } from '@/Base.types.ts';
|
||||
|
||||
export const DIALOG_PADDING: number = 2;
|
||||
|
||||
@@ -20,3 +22,24 @@ export const CARD_STYLING: SxProps<Theme> = {
|
||||
padding: DIALOG_PADDING,
|
||||
...CARD_BACKGROUND,
|
||||
};
|
||||
|
||||
export const PUBLISHING_TYPE_TO_TRANSLATION: Record<PublishingType, TranslationKey> = {
|
||||
[PublishingType.UNKNOWN]: 'tracking.publishing.type.unknown',
|
||||
[PublishingType.MANGA]: 'tracking.publishing.type.manga',
|
||||
[PublishingType.NOVEL]: 'tracking.publishing.type.novel',
|
||||
[PublishingType.ONE_SHOT]: 'tracking.publishing.type.one_shot',
|
||||
[PublishingType.DOUJINSHI]: 'tracking.publishing.type.doujinshi',
|
||||
[PublishingType.MANHWA]: 'tracking.publishing.type.manhwa',
|
||||
[PublishingType.MANHUA]: 'tracking.publishing.type.manhua',
|
||||
[PublishingType.OEL]: 'tracking.publishing.type.oel',
|
||||
};
|
||||
|
||||
export const PUBLISHING_STATUS_TO_TRANSLATION: Record<PublishingStatus, TranslationKey> = {
|
||||
[PublishingStatus.FINISHED]: 'tracking.publishing.status.finished',
|
||||
[PublishingStatus.RELEASING]: 'tracking.publishing.status.releasing',
|
||||
[PublishingStatus.NOT_YET_RELEASED]: 'tracking.publishing.status.not_yet_released',
|
||||
[PublishingStatus.CANCELLED]: 'tracking.publishing.status.cancelled',
|
||||
[PublishingStatus.HIATUS]: 'tracking.publishing.status.hiatus',
|
||||
[PublishingStatus.CURRENTLY_PUBLISHING]: 'tracking.publishing.status.currently_publishing',
|
||||
[PublishingStatus.NOT_YET_PUBLISHED]: 'tracking.publishing.status.not_yet_published',
|
||||
};
|
||||
|
||||
@@ -10,3 +10,24 @@ export type MetadataTrackingSettings = {
|
||||
updateProgressAfterReading: boolean;
|
||||
updateProgressManualMarkRead: boolean;
|
||||
};
|
||||
|
||||
export enum PublishingType {
|
||||
UNKNOWN = 'unknown',
|
||||
MANGA = 'manga',
|
||||
NOVEL = 'novel',
|
||||
ONE_SHOT = 'one_shot',
|
||||
DOUJINSHI = 'doujinshi',
|
||||
MANHWA = 'manhwa',
|
||||
MANHUA = 'manhua',
|
||||
OEL = 'oel',
|
||||
}
|
||||
|
||||
export enum PublishingStatus {
|
||||
FINISHED = 'finished',
|
||||
RELEASING = 'releasing',
|
||||
NOT_YET_RELEASED = 'not_yet_released',
|
||||
CANCELLED = 'cancelled',
|
||||
HIATUS = 'hiatus',
|
||||
CURRENTLY_PUBLISHING = 'currently_publishing',
|
||||
NOT_YET_PUBLISHED = 'not_yet_published',
|
||||
}
|
||||
|
||||
@@ -26,9 +26,13 @@ import { SpinnerImage } from '@/modules/core/components/SpinnerImage.tsx';
|
||||
import { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx';
|
||||
import { Metadata } from '@/modules/core/components/texts/Metadata.tsx';
|
||||
import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx';
|
||||
import { TTrackerManga } from '@/modules/tracker/services/Trackers.ts';
|
||||
import { Trackers, TTrackerManga } from '@/modules/tracker/services/Trackers.ts';
|
||||
import { MANGA_COVER_ASPECT_RATIO } from '@/modules/manga/Manga.constants.ts';
|
||||
import { MUIUtil } from '@/lib/mui/MUI.util.ts';
|
||||
import {
|
||||
PUBLISHING_STATUS_TO_TRANSLATION,
|
||||
PUBLISHING_TYPE_TO_TRANSLATION,
|
||||
} from '@/modules/tracker/Tracker.constants.ts';
|
||||
|
||||
const TrackerMangaCardTitle = ({ title, selected }: { title: string; selected: boolean }) => (
|
||||
<Stack
|
||||
@@ -170,13 +174,19 @@ export const TrackerMangaCard = ({
|
||||
<TrackerMangaCardTitle title={manga.title} selected={selected} />
|
||||
</TrackerMangaCardLink>
|
||||
{manga.publishingType && (
|
||||
<Metadata title={t('global.label.type')} value={manga.publishingType} />
|
||||
<Metadata
|
||||
title={t('global.label.type')}
|
||||
value={t(PUBLISHING_TYPE_TO_TRANSLATION[Trackers.getPublishingType(manga)])}
|
||||
/>
|
||||
)}
|
||||
{manga.startDate && (
|
||||
<Metadata title={t('global.label.started')} value={manga.startDate} />
|
||||
)}
|
||||
{manga.publishingStatus && (
|
||||
<Metadata title={t('manga.label.status')} value={manga.publishingStatus} />
|
||||
<Metadata
|
||||
title={t('manga.label.status')}
|
||||
value={t(PUBLISHING_STATUS_TO_TRANSLATION[Trackers.getPublishingStatus(manga)])}
|
||||
/>
|
||||
)}
|
||||
</Stack>
|
||||
</Stack>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
*/
|
||||
|
||||
import { TrackerType, TrackRecordType, TrackSearchType } from '@/lib/graphql/generated/graphql.ts';
|
||||
import { PublishingStatus, PublishingType } from '@/modules/tracker/Tracker.types.ts';
|
||||
|
||||
export enum Tracker {
|
||||
MYANIMELIST = 1,
|
||||
@@ -53,6 +54,8 @@ type TrackerIdInfo = Pick<TrackerType, 'id'>;
|
||||
type LoggedInInfo = Pick<TrackerType, 'isLoggedIn' | 'isTokenExpired'>;
|
||||
|
||||
type TrackRecordTrackerInfo = Pick<TrackRecordType, 'trackerId'>;
|
||||
type TrackSearchPublishingTypeInfo = Pick<TrackSearchType, 'publishingType'>;
|
||||
type TrackSearchPublishingStatusInfo = Pick<TrackSearchType, 'publishingStatus'>;
|
||||
|
||||
export class Trackers {
|
||||
static getIds(trackers: TrackerIdInfo[]): number[] {
|
||||
@@ -90,4 +93,56 @@ export class Trackers {
|
||||
): TrackRecord | undefined {
|
||||
return trackRecords.find((trackRecord) => trackRecord.trackerId === tracker.id);
|
||||
}
|
||||
|
||||
static getPublishingType<TrackSearch extends TrackSearchPublishingTypeInfo>(
|
||||
trackSearch: TrackSearch,
|
||||
): PublishingType {
|
||||
const type = trackSearch.publishingType.toLowerCase().replaceAll(' ', '_');
|
||||
|
||||
switch (type) {
|
||||
case PublishingType.UNKNOWN:
|
||||
return PublishingType.UNKNOWN;
|
||||
case PublishingType.MANGA:
|
||||
return PublishingType.MANGA;
|
||||
case PublishingType.NOVEL:
|
||||
return PublishingType.NOVEL;
|
||||
case PublishingType.ONE_SHOT:
|
||||
return PublishingType.ONE_SHOT;
|
||||
case PublishingType.DOUJINSHI:
|
||||
return PublishingType.DOUJINSHI;
|
||||
case PublishingType.MANHWA:
|
||||
return PublishingType.MANHWA;
|
||||
case PublishingType.MANHUA:
|
||||
return PublishingType.MANHUA;
|
||||
case PublishingType.OEL:
|
||||
return PublishingType.OEL;
|
||||
default:
|
||||
return trackSearch.publishingType as PublishingType;
|
||||
}
|
||||
}
|
||||
|
||||
static getPublishingStatus<TrackSearch extends TrackSearchPublishingStatusInfo>(
|
||||
trackSearch: TrackSearch,
|
||||
): PublishingStatus {
|
||||
const status = trackSearch.publishingStatus.toLowerCase().replaceAll(' ', '_');
|
||||
|
||||
switch (status) {
|
||||
case PublishingStatus.FINISHED:
|
||||
return PublishingStatus.FINISHED;
|
||||
case PublishingStatus.RELEASING:
|
||||
return PublishingStatus.RELEASING;
|
||||
case PublishingStatus.NOT_YET_RELEASED:
|
||||
return PublishingStatus.NOT_YET_RELEASED;
|
||||
case PublishingStatus.CANCELLED:
|
||||
return PublishingStatus.CANCELLED;
|
||||
case PublishingStatus.HIATUS:
|
||||
return PublishingStatus.HIATUS;
|
||||
case PublishingStatus.CURRENTLY_PUBLISHING:
|
||||
return PublishingStatus.CURRENTLY_PUBLISHING;
|
||||
case PublishingStatus.NOT_YET_PUBLISHED:
|
||||
return PublishingStatus.NOT_YET_PUBLISHED;
|
||||
default:
|
||||
return trackSearch.publishingStatus as PublishingStatus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user