Translate track search publishing type and status
This commit is contained in:
@@ -154,10 +154,10 @@
|
|||||||
"downloaded": "Downloaded"
|
"downloaded": "Downloaded"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"value_one": "{{count}} chapter",
|
|
||||||
"value_other": "{{count}} chapters",
|
|
||||||
"title_one": "Chapter",
|
"title_one": "Chapter",
|
||||||
"title_other": "Chapters"
|
"title_other": "Chapters",
|
||||||
|
"value_one": "{{count}} chapter",
|
||||||
|
"value_other": "{{count}} chapters"
|
||||||
},
|
},
|
||||||
"download": {
|
"download": {
|
||||||
"queue": {
|
"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": {
|
"settings": {
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"title": {
|
"title": {
|
||||||
|
|||||||
@@ -7,6 +7,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { SxProps, Theme } from '@mui/material/styles';
|
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;
|
export const DIALOG_PADDING: number = 2;
|
||||||
|
|
||||||
@@ -20,3 +22,24 @@ export const CARD_STYLING: SxProps<Theme> = {
|
|||||||
padding: DIALOG_PADDING,
|
padding: DIALOG_PADDING,
|
||||||
...CARD_BACKGROUND,
|
...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;
|
updateProgressAfterReading: boolean;
|
||||||
updateProgressManualMarkRead: 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 { TypographyMaxLines } from '@/modules/core/components/texts/TypographyMaxLines.tsx';
|
||||||
import { Metadata } from '@/modules/core/components/texts/Metadata.tsx';
|
import { Metadata } from '@/modules/core/components/texts/Metadata.tsx';
|
||||||
import { MediaQuery } from '@/modules/core/utils/MediaQuery.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 { MANGA_COVER_ASPECT_RATIO } from '@/modules/manga/Manga.constants.ts';
|
||||||
import { MUIUtil } from '@/lib/mui/MUI.util.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 }) => (
|
const TrackerMangaCardTitle = ({ title, selected }: { title: string; selected: boolean }) => (
|
||||||
<Stack
|
<Stack
|
||||||
@@ -170,13 +174,19 @@ export const TrackerMangaCard = ({
|
|||||||
<TrackerMangaCardTitle title={manga.title} selected={selected} />
|
<TrackerMangaCardTitle title={manga.title} selected={selected} />
|
||||||
</TrackerMangaCardLink>
|
</TrackerMangaCardLink>
|
||||||
{manga.publishingType && (
|
{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 && (
|
{manga.startDate && (
|
||||||
<Metadata title={t('global.label.started')} value={manga.startDate} />
|
<Metadata title={t('global.label.started')} value={manga.startDate} />
|
||||||
)}
|
)}
|
||||||
{manga.publishingStatus && (
|
{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>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { TrackerType, TrackRecordType, TrackSearchType } from '@/lib/graphql/generated/graphql.ts';
|
import { TrackerType, TrackRecordType, TrackSearchType } from '@/lib/graphql/generated/graphql.ts';
|
||||||
|
import { PublishingStatus, PublishingType } from '@/modules/tracker/Tracker.types.ts';
|
||||||
|
|
||||||
export enum Tracker {
|
export enum Tracker {
|
||||||
MYANIMELIST = 1,
|
MYANIMELIST = 1,
|
||||||
@@ -53,6 +54,8 @@ type TrackerIdInfo = Pick<TrackerType, 'id'>;
|
|||||||
type LoggedInInfo = Pick<TrackerType, 'isLoggedIn' | 'isTokenExpired'>;
|
type LoggedInInfo = Pick<TrackerType, 'isLoggedIn' | 'isTokenExpired'>;
|
||||||
|
|
||||||
type TrackRecordTrackerInfo = Pick<TrackRecordType, 'trackerId'>;
|
type TrackRecordTrackerInfo = Pick<TrackRecordType, 'trackerId'>;
|
||||||
|
type TrackSearchPublishingTypeInfo = Pick<TrackSearchType, 'publishingType'>;
|
||||||
|
type TrackSearchPublishingStatusInfo = Pick<TrackSearchType, 'publishingStatus'>;
|
||||||
|
|
||||||
export class Trackers {
|
export class Trackers {
|
||||||
static getIds(trackers: TrackerIdInfo[]): number[] {
|
static getIds(trackers: TrackerIdInfo[]): number[] {
|
||||||
@@ -90,4 +93,56 @@ export class Trackers {
|
|||||||
): TrackRecord | undefined {
|
): TrackRecord | undefined {
|
||||||
return trackRecords.find((trackRecord) => trackRecord.trackerId === tracker.id);
|
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