Integrate extension api v1.6 changes

This commit is contained in:
schroda
2026-07-01 15:10:36 +02:00
parent 3812a84514
commit dd1199f3be
32 changed files with 1190 additions and 176 deletions

View File

@@ -70,8 +70,8 @@ export type SourceIdInfo = Pick<SourceType, 'id'>;
export type SourceLanguageInfo = Pick<SourceType, 'lang'>;
export type SourceNameInfo = Pick<SourceType, 'name'>;
export type SourceDisplayNameInfo = Pick<SourceType, 'displayName'>;
export type SourceNsfwInfo = Pick<SourceType, 'isNsfw'>;
export type SourceRepoInfo = { extension: Pick<ExtensionType, 'repo'> };
export type SourceNsfwInfo = Pick<SourceType, 'contentWarning'>;
export type SourceStoreInfo = { extension: Pick<ExtensionType, 'storeIndexUrl'> };
export type SourceMetaInfo = { meta: SourceMetaFieldsFragment[] };
export type SourceConfigurableInfo = Pick<SourceType, 'isConfigurable'>;
export type SourceIconInfo = Pick<SourceType, 'iconUrl'>;

View File

@@ -423,10 +423,10 @@ export function SourceMangas() {
<>
<AppbarSearch />
<SourceGridLayout />
<CustomTooltip title={t`Open in WebView`} disabled={!source?.baseUrl}>
<CustomTooltip title={t`Open in WebView`} disabled={!source?.homeUrl}>
<IconButton
disabled={!source?.baseUrl}
href={source?.baseUrl ? requestManager.getWebviewUrl(source?.baseUrl) : ''}
disabled={!source?.homeUrl}
href={source?.homeUrl ? requestManager.getWebviewUrl(source?.homeUrl) : ''}
rel="noreferrer"
target="_blank"
color="inherit"

View File

@@ -14,7 +14,7 @@ import type {
SourceLanguageInfo,
SourceNsfwInfo,
SourceMetaInfo,
SourceRepoInfo,
SourceStoreInfo,
} from '@/features/source/Source.types.ts';
import {
DefaultLanguage,
@@ -34,6 +34,7 @@ import type { SourceBaseFieldsFragment } from '@/lib/graphql/generated/graphql.t
import { requestManager } from '@/lib/requests/RequestManager.ts';
import type { DocumentNode, Unmasked } from '@apollo/client';
import { SOURCE_BASE_FIELDS } from '@/lib/graphql/source/SourceFragments.ts';
import { isNsfw as isNsfwFnc } from '@/features/extension/Extensions.utils.ts';
export class Sources {
static readonly LOCAL_SOURCE_ID = '0';
@@ -134,7 +135,7 @@ export class Sources {
const normalizedLanguages = toComparableLanguages(toUniqueLanguageCodes(languages ?? []));
const filters: [Condition: any, CheckKeepLocalSource: boolean, Filter: (source: Source) => boolean][] = [
[isNsfw, true, (source: Source) => source.isNsfw === isNsfw],
[isNsfw, true, (source: Source) => isNsfwFnc(source.contentWarning) === isNsfw],
[
languages,
true,
@@ -157,14 +158,14 @@ export class Sources {
}, sources);
}
static areFromMultipleRepos<Source extends SourceIdInfo & SourceRepoInfo>(sources: Source[]): boolean {
const repo = sources.find((source) => !!source.extension.repo)?.extension.repo;
static areFromMultipleStores<Source extends SourceIdInfo & SourceStoreInfo>(sources: Source[]): boolean {
const store = sources.find((source) => !!source.extension.storeIndexUrl)?.extension.storeIndexUrl;
if (!repo || !sources.length) {
if (!store || !sources.length) {
return false;
}
return sources.some((source) => source.extension.repo !== repo && !Sources.isLocalSource(source));
return sources.some((source) => source.extension.storeIndexUrl !== store && !Sources.isLocalSource(source));
}
static getLastUsedSource<Source extends SourceIdInfo & SourceMetaInfo>(