Skip to content

AniList airing calendar, and mark linked titles in search - #11

Closed
professorDeveloper wants to merge 3 commits into
masterfrom
feat/anilist-polish
Closed

AniList airing calendar, and mark linked titles in search#11
professorDeveloper wants to merge 3 commits into
masterfrom
feat/anilist-polish

Conversation

@professorDeveloper

Copy link
Copy Markdown
Owner

Airing calendar

Upcoming is deliberately narrow — only shows you already follow — so there was nowhere in the app to see what a new season brings. The calendar is the wide view: seven days from today, everything airing, with a filter back down to your own list.

  • Works signed out, since the schedule is public. Connecting only adds the marks and the filter.
  • Days are fetched on demand and kept rather than pulling the week up front: a week of global airings runs to several hundred entries and six of those days are ones nobody opens.
  • The query pages, because AniList caps perPage at 50 and asking for one page silently truncates the evening.
  • The empty state distinguishes "nothing airs today" from "nothing of yours airs today" — those send the user to different places.

Reachable from the AniList library app bar (offered signed out too) and from Connections.

AniList in search

Search results carry the AniList mark when the title is already linked. Linking is what makes tracking work — a source title rarely matches AniList exactly — but the link was invisible outside the AniList screens, so there was no way to tell from a result whether watching it would count. Cross-search passes each hit's own provider; the single-source grid falls back to the active one.

Translations for en/ru/uz. flutter analyze clean apart from two pre-existing infos.

…equest loop

## English

Every AniList and tracker string is now English in all three locales, and the
hardcoded Uzbek in the service and controller is gone. AniList's own vocabulary
is English — "Watching", "Planning", "Completed" — and half-translating a
third-party service reads worse than not translating it.

## The logo

assets/icons/anilist.svg replaces the blue circle-with-a-link-icon in the
connect prompt, the connections tile and the library bar.

It is a reconstruction, not the file from AniList's brand kit. Dropping the real
SVG in at that path replaces it everywhere with no code change.

## The favorites request loop

The log showed GET /auth/favorites firing about twenty-five times in a row until
the server answered 429.

getFavorites() writes the server's rows into the local cache. The cache bumps a
revision. My List refreshes on every revision bump. So a refresh caused a
revision bump, which caused a refresh — as fast as the network allowed, on every
visit to that tab.

Two ends, both closed:

  * upsertAll bumps the revision only when something actually changed. It was
    bumping unconditionally, so writing identical rows still woke every listener.
  * the My List listener ignores a bump while its own refresh is in flight. The
    existing guard only checked MyListLoading, and a refresh emits
    MyListLoaded(refreshing: true).

## Visibility

The profile row is now branded — logo, account name when connected, a Connect
chip when not — instead of a link icon on a "Connections" line. Connecting a
tracker is something people only do if they notice it exists.
Replaces my reconstruction with the file from Wikimedia Commons. It carries its
own colours — dark tile, blue mark, white A — so it is rendered untinted; the
colour filter that suited a single-path mark would have flattened it.

Corners are rounded at the call site rather than by editing the artwork.
Upcoming is deliberately narrow — only shows you already follow — so there was
nowhere in the app to see what a new season brings. The calendar is the wide
view: seven days from today, everything airing, with a filter back down to
your own list. It works signed out, since the schedule is public; connecting
only adds the marks and the filter.

Days are fetched on demand and kept rather than pulling the week up front: a
week of global airings runs to several hundred entries and six of those days
are ones nobody opens. The query pages, because AniList caps perPage at 50 and
asking for one page silently truncates the evening.

Search results now carry the AniList mark when the title is already linked.
Linking is what makes tracking work — a source title rarely matches AniList
exactly — but the link was invisible outside the AniList screens, so there was
no way to tell from a result whether watching it would count. Cross-search
passes each hit's own provider; the single-source grid falls back to the
active one.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant