Closed NAC135 closed 1 week ago
Привет, спасибо за фидбек!
Привет и спасибо за PR! Я отметил моменты, которые стоит улучшить по коду. По новым фичам для мастера уже отписывался, поэтому, если ты хочешь, чтобы это попало в релиз, думаю всё же надо реализовать так, либо как-то по-другому согласовывать твоё виденье (в любом случае сначала лучше договорится о том, как и где мы хотим это делать).
@NotaCockroach135 привет! Я посмотрел твои ответы и изменения с рефактором. По рефактору могу сказать, что стало сильно лучше. У меня есть только несколько вопросов (ниже по пунктам). Если у тебя будут вопросы ко мне, то предлагаю вести переписку в тг или вк - тут ссылки постить не буду, меня можно найти в группах shikicinema.
1.
выбираем любое аниме (если у него есть франшиза) и сразу открываем его в плеере - в плеере появляется список франшизы в котором нет ненужных тайтлов
Я не очень понимаю, зачем для этого делать выборку из общего списка аниме, а потом дополнительно делать фильтр по данным из конфига сорцов шикимори из гитхаб. Выглядит как мегакостыль. Вот, смотри, я тебе кидал API: /api/animes/820/franchise. Его интерфейс выглядит так:
interface AnimeFranchiseInfo {
links: AnimeFranchiseLink[];
nodes: AnimeFranchiseNode[];
}
interface AnimeFranchiseLink {
id: number;
/** от какого аниме отношение */
target_id: number;
/** по отношению к какому аниме */
source_id: number;
/** приквел / сиквел / побочная история / оригинальная история (первоисточник) / альтернативная версия */
relation: 'prequel' | 'sequel' | 'side_story' | 'parent_story' | 'alternative_version';
/** с этими полями попробуй сам разбраться */
source: number;
target: number;
weight: number;
}
interface AnimeFranchiseNode {
/** аниме id (связано с links.source_id и links.target_id */
id: number;
/** дата выхода (в секундах!) */
date: number;
/** название */
name: string;
/** ссылка на постер */
image_url: string;
/** ссылка на аниме */
url: string;
/** год выхода (1993) */
year: number;
/** тип */
kind: 'Фильм' | 'OVA'; // и т.п...
weight: number;
}
Почему этот эндпоинт не используешь? По-моему он достаточно прозрачный и не требует изменения CSP в манифесте, дополнительных запросов и сложной логики фильтрации (разве что нужно будет отобрать из links
корректные связки source_id
и target_id
и корректно маппить их с nodes
).
2.
Так же удобно было бы сразу видеть что уже просмотрено (я это добавил в виде смайликов)
По реализации по-моему мнению, дизайн сомнительный. Понимаю, что он не сильно отличается от того, что есть в плане списка эпизодов и видео, но есть один важный нюанс - такого не было в оригинальном плеере. Плюс, опять же, на мой взгляд он перегружен, т.к. не совсем понятно с точки зрения пользователя что есть что (см. скриншот):
Я бы всё же предпочел, чтобы это выглядело так, как описывал в issue. Хз, самое близкое по дизайну то, что на шикимори в франшизах, собственно
3.
Общий комментарий по коду: почитай, пожалуйста, как пользоваться реактивностью (rxjs) и angular. Рекомендую поискать статьи на хабре, но сначала почитать доки (особенно angular, там и без статей всё понятно):
@ngrx/store
и @ngrx/router-store
Персональная рекомендация, если захочешь углубиться, можешь опять же на хабре найти статьи от Tinkoff по angular. Сам их иногда почитываю.
4 (минорная)
Ты правишь код через github? Лучше локально заиметь git и какую-нибудь IDE (рекомендую webstorm) и редактировать код оттуда. Так тебе будет сильно проще локально смотреть изменения, открывать/искать нужные файлы и коммитится не по одному файлу.
Практически решает #160
franchise-list
,