mirror of
https://github.com/kodjodevf/mangayomi.git
synced 2026-03-11 21:35:32 +00:00
fixed Trakt refresh token
- now refreshes expired tokens at startup - prevents accidental logouts for users who has the tracking screen as default navigation
This commit is contained in:
parent
40a0e080f9
commit
4d89cfe32b
27 changed files with 1126 additions and 2851 deletions
|
|
@ -18,7 +18,10 @@ import 'package:mangayomi/models/custom_button.dart';
|
|||
import 'package:mangayomi/models/manga.dart';
|
||||
import 'package:mangayomi/models/settings.dart';
|
||||
import 'package:mangayomi/models/source.dart';
|
||||
import 'package:mangayomi/models/track.dart' as track;
|
||||
import 'package:mangayomi/models/track_preference.dart';
|
||||
import 'package:mangayomi/models/track_search.dart';
|
||||
import 'package:mangayomi/modules/manga/detail/providers/track_state_providers.dart';
|
||||
import 'package:mangayomi/modules/more/data_and_storage/providers/storage_usage.dart';
|
||||
import 'package:mangayomi/modules/more/settings/browse/providers/browse_state_provider.dart';
|
||||
import 'package:mangayomi/modules/more/settings/general/providers/general_state_provider.dart';
|
||||
|
|
@ -101,12 +104,13 @@ class _MyAppState extends ConsumerState<MyApp> {
|
|||
void initState() {
|
||||
super.initState();
|
||||
initializeDateFormatting();
|
||||
customDns = ref.read(customDnsStateProvider);
|
||||
_checkTrackerRefresh();
|
||||
_initDeepLinks();
|
||||
_setupMpvConfig();
|
||||
unawaited(ref.read(scanLocalLibraryProvider.future));
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
customDns = ref.read(customDnsStateProvider);
|
||||
if (ref.read(clearChapterCacheOnAppLaunchStateProvider)) {
|
||||
ref
|
||||
.read(totalChapterCacheSizeStateProvider.notifier)
|
||||
|
|
@ -341,6 +345,22 @@ class _MyAppState extends ConsumerState<MyApp> {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _checkTrackerRefresh() async {
|
||||
final prefs = await isar.trackPreferences
|
||||
.filter()
|
||||
.syncIdIsNotNull()
|
||||
.findAll();
|
||||
for (final pref in prefs) {
|
||||
final temp = track.Track(
|
||||
syncId: pref.syncId,
|
||||
status: track.TrackStatus.completed,
|
||||
);
|
||||
ref
|
||||
.read(trackStateProvider(track: temp, itemType: null).notifier)
|
||||
.checkRefresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class AllowScrollBehavior extends MaterialScrollBehavior {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,15 @@ class TrackPreference {
|
|||
|
||||
String? prefs;
|
||||
|
||||
TrackPreference({this.syncId, this.username, this.oAuth, this.prefs});
|
||||
bool? refreshing;
|
||||
|
||||
TrackPreference({
|
||||
this.syncId,
|
||||
this.username,
|
||||
this.oAuth,
|
||||
this.prefs,
|
||||
this.refreshing,
|
||||
});
|
||||
|
||||
TrackPreference.fromJson(Map<String, dynamic> json) {
|
||||
syncId = json['syncId'];
|
||||
|
|
|
|||
|
|
@ -19,8 +19,13 @@ const TrackPreferenceSchema = CollectionSchema(
|
|||
properties: {
|
||||
r'oAuth': PropertySchema(id: 0, name: r'oAuth', type: IsarType.string),
|
||||
r'prefs': PropertySchema(id: 1, name: r'prefs', type: IsarType.string),
|
||||
r'username': PropertySchema(
|
||||
r'refreshing': PropertySchema(
|
||||
id: 2,
|
||||
name: r'refreshing',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'username': PropertySchema(
|
||||
id: 3,
|
||||
name: r'username',
|
||||
type: IsarType.string,
|
||||
),
|
||||
|
|
@ -76,7 +81,8 @@ void _trackPreferenceSerialize(
|
|||
) {
|
||||
writer.writeString(offsets[0], object.oAuth);
|
||||
writer.writeString(offsets[1], object.prefs);
|
||||
writer.writeString(offsets[2], object.username);
|
||||
writer.writeBool(offsets[2], object.refreshing);
|
||||
writer.writeString(offsets[3], object.username);
|
||||
}
|
||||
|
||||
TrackPreference _trackPreferenceDeserialize(
|
||||
|
|
@ -88,8 +94,9 @@ TrackPreference _trackPreferenceDeserialize(
|
|||
final object = TrackPreference(
|
||||
oAuth: reader.readStringOrNull(offsets[0]),
|
||||
prefs: reader.readStringOrNull(offsets[1]),
|
||||
refreshing: reader.readBoolOrNull(offsets[2]),
|
||||
syncId: id,
|
||||
username: reader.readStringOrNull(offsets[2]),
|
||||
username: reader.readStringOrNull(offsets[3]),
|
||||
);
|
||||
return object;
|
||||
}
|
||||
|
|
@ -106,6 +113,8 @@ P _trackPreferenceDeserializeProp<P>(
|
|||
case 1:
|
||||
return (reader.readStringOrNull(offset)) as P;
|
||||
case 2:
|
||||
return (reader.readBoolOrNull(offset)) as P;
|
||||
case 3:
|
||||
return (reader.readStringOrNull(offset)) as P;
|
||||
default:
|
||||
throw IsarError('Unknown property with id $propertyId');
|
||||
|
|
@ -529,6 +538,33 @@ extension TrackPreferenceQueryFilter
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterFilterCondition>
|
||||
refreshingIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(
|
||||
const FilterCondition.isNull(property: r'refreshing'),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterFilterCondition>
|
||||
refreshingIsNotNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(
|
||||
const FilterCondition.isNotNull(property: r'refreshing'),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterFilterCondition>
|
||||
refreshingEqualTo(bool? value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(
|
||||
FilterCondition.equalTo(property: r'refreshing', value: value),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterFilterCondition>
|
||||
syncIdIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
|
|
@ -796,6 +832,20 @@ extension TrackPreferenceQuerySortBy
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterSortBy>
|
||||
sortByRefreshing() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'refreshing', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterSortBy>
|
||||
sortByRefreshingDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'refreshing', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterSortBy>
|
||||
sortByUsername() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
|
|
@ -839,6 +889,20 @@ extension TrackPreferenceQuerySortThenBy
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterSortBy>
|
||||
thenByRefreshing() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'refreshing', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterSortBy>
|
||||
thenByRefreshingDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'refreshing', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QAfterSortBy> thenBySyncId() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'syncId', Sort.asc);
|
||||
|
|
@ -885,6 +949,13 @@ extension TrackPreferenceQueryWhereDistinct
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QDistinct>
|
||||
distinctByRefreshing() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'refreshing');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, TrackPreference, QDistinct> distinctByUsername({
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
|
|
@ -914,6 +985,12 @@ extension TrackPreferenceQueryProperty
|
|||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, bool?, QQueryOperations> refreshingProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'refreshing');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<TrackPreference, String?, QQueryOperations> usernameProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'username');
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'calendar_provider.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$getCalendarStreamHash() => r'dcdad165b2da2420bafa8b70c4b3a0fb336e5021';
|
||||
String _$getCalendarStreamHash() => r'850d81742f8ac5ce88175732c0edf57a7a9295d4';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -169,6 +169,12 @@ class TrackState extends _$TrackState {
|
|||
final tracker = getNotifier(syncId);
|
||||
return await tracker.fetchUserData(isManga: _isManga);
|
||||
}
|
||||
|
||||
Future<bool> checkRefresh() async {
|
||||
final syncId = track!.syncId!;
|
||||
final tracker = getNotifier(syncId);
|
||||
return await tracker.checkRefresh();
|
||||
}
|
||||
}
|
||||
|
||||
@riverpod
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'track_state_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$trackStateHash() => r'0b2fa471cb843d5880f921f1c721a05b54bc1515';
|
||||
String _$trackStateHash() => r'19fcc38b559996509aa71645de9531bc4b2d4205';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'backup.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$doBackUpHash() => r'a570fe00421ee352ea170440ce27b258cf9ddc15';
|
||||
String _$doBackUpHash() => r'd16d5b6e5ed2c20988fa2d49842524d70ac0ed0d';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,15 @@ class Tracks extends _$Tracks {
|
|||
return isar.trackPreferences.getSync(syncId!);
|
||||
}
|
||||
|
||||
void setRefreshing(bool refreshing) {
|
||||
if (state != null) {
|
||||
state!.refreshing = refreshing;
|
||||
isar.writeTxnSync(() {
|
||||
isar.trackPreferences.putSync(state!);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void login(TrackPreference trackPreference) {
|
||||
isar.writeTxnSync(() {
|
||||
isar.trackPreferences.putSync(trackPreference);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'track_providers.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$tracksHash() => r'71db9b803345d0b31c8efba0538a68fea356a71f';
|
||||
String _$tracksHash() => r'05f1531a3200b0ad9f1e4bf74cd9eb44301f9f21';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -163,9 +163,11 @@ class _TrackerLibraryScreenState extends ConsumerState<TrackerLibraryScreen> {
|
|||
body: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 15, vertical: 5),
|
||||
child: StreamBuilder(
|
||||
stream: isar.trackPreferences.filter().syncIdIsNotNull().watch(
|
||||
fireImmediately: true,
|
||||
),
|
||||
stream: isar.trackPreferences
|
||||
.filter()
|
||||
.syncIdIsNotNull()
|
||||
.anyOf([false, null], (q, e) => q.refreshingEqualTo(e))
|
||||
.watch(fireImmediately: true),
|
||||
builder: (context, snapshot) {
|
||||
_preferences = snapshot.hasData ? snapshot.data ?? [] : [];
|
||||
return _preferences.any((p) => p.syncId == trackerProvider.syncId)
|
||||
|
|
@ -207,6 +209,13 @@ class _TrackerLibraryScreenState extends ConsumerState<TrackerLibraryScreen> {
|
|||
TrackerProviders trackerProvider,
|
||||
ItemType itemType,
|
||||
) async {
|
||||
final temp = Track(
|
||||
syncId: trackerProvider.syncId,
|
||||
status: TrackStatus.completed,
|
||||
);
|
||||
await ref
|
||||
.read(trackStateProvider(track: temp, itemType: null).notifier)
|
||||
.checkRefresh();
|
||||
final box = await Hive.openBox("tracker_library");
|
||||
final keys = box.keys.where(
|
||||
(e) => (e as String).startsWith(
|
||||
|
|
|
|||
|
|
@ -201,6 +201,16 @@ class StorageProvider {
|
|||
});
|
||||
}
|
||||
|
||||
final prefs = await isar.trackPreferences
|
||||
.filter()
|
||||
.syncIdIsNotNull()
|
||||
.findAll();
|
||||
await isar.writeTxn(() async {
|
||||
for (final pref in prefs) {
|
||||
await isar.trackPreferences.put(pref..refreshing = true);
|
||||
}
|
||||
});
|
||||
|
||||
final customButton = await isar.customButtons
|
||||
.filter()
|
||||
.idIsNotNull()
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'aniskip.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$aniSkipHash() => r'887869b54e2e151633efd46da83bde845e14f421';
|
||||
String _$aniSkipHash() => r'2e5d19b025a2207ff64da7bf7908450ea9e5ff8c';
|
||||
|
||||
/// See also [AniSkip].
|
||||
@ProviderFor(AniSkip)
|
||||
|
|
|
|||
|
|
@ -127,24 +127,30 @@ class RhttpUnknownException extends RhttpException {
|
|||
}
|
||||
|
||||
RhttpException parseError(HttpRequest request, rust.RhttpError error) {
|
||||
return error.when(
|
||||
rhttpCancelError: () => RhttpCancelException(request),
|
||||
rhttpTimeoutError: () => RhttpTimeoutException(request),
|
||||
rhttpRedirectError: () => RhttpRedirectException(request),
|
||||
rhttpStatusCodeError: (code, headers, body) => RhttpStatusCodeException(
|
||||
request: request,
|
||||
statusCode: code,
|
||||
headers: headers,
|
||||
body: switch (body) {
|
||||
rust_http.HttpResponseBody_Text() => body.field0,
|
||||
rust_http.HttpResponseBody_Bytes() => body.field0,
|
||||
rust_http.HttpResponseBody_Stream() => null,
|
||||
},
|
||||
),
|
||||
rhttpInvalidCertificateError: (message) =>
|
||||
RhttpInvalidCertificateException(request: request, message: message),
|
||||
rhttpConnectionError: (message) =>
|
||||
RhttpConnectionException(request, message),
|
||||
rhttpUnknownError: (message) => RhttpUnknownException(request, message),
|
||||
);
|
||||
return switch (error) {
|
||||
rust.RhttpError_RhttpCancelError() => RhttpCancelException(request),
|
||||
rust.RhttpError_RhttpTimeoutError() => RhttpTimeoutException(request),
|
||||
rust.RhttpError_RhttpRedirectError() => RhttpRedirectException(request),
|
||||
rust.RhttpError_RhttpStatusCodeError(
|
||||
field0: final code,
|
||||
field1: final headers,
|
||||
field2: final body,
|
||||
) =>
|
||||
RhttpStatusCodeException(
|
||||
request: request,
|
||||
statusCode: code,
|
||||
headers: headers,
|
||||
body: switch (body) {
|
||||
rust_http.HttpResponseBody_Text() => body.field0,
|
||||
rust_http.HttpResponseBody_Bytes() => body.field0,
|
||||
rust_http.HttpResponseBody_Stream() => null,
|
||||
},
|
||||
),
|
||||
rust.RhttpError_RhttpInvalidCertificateError(field0: final message) =>
|
||||
RhttpInvalidCertificateException(request: request, message: message),
|
||||
rust.RhttpError_RhttpConnectionError(field0: final message) =>
|
||||
RhttpConnectionException(request, message),
|
||||
rust.RhttpError_RhttpUnknownError(field0: final message) =>
|
||||
RhttpUnknownException(request, message),
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -535,4 +535,10 @@ class Anilist extends _$Anilist implements BaseTracker {
|
|||
_ => (100, 1),
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> checkRefresh() async {
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'anilist.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$anilistHash() => r'c786a526fdacc875e4a7e00886b2bda546eafeae';
|
||||
String _$anilistHash() => r'f6d46f4e330f1461ef18242a5e86589cb7a165c5';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import 'package:mangayomi/models/track.dart';
|
|||
import 'package:mangayomi/models/track_search.dart';
|
||||
|
||||
abstract class BaseTracker {
|
||||
Future<bool> checkRefresh();
|
||||
Future<Track?> findLibItem(Track track, bool isManga);
|
||||
Future<Track> update(Track track, bool isManga);
|
||||
List<TrackStatus> statusList(bool isManga);
|
||||
|
|
|
|||
|
|
@ -428,4 +428,10 @@ class Kitsu extends _$Kitsu implements BaseTracker {
|
|||
(int, int) getScoreValue() {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> checkRefresh() async {
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'kitsu.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$kitsuHash() => r'3f6af42dd0bb3fe543197db692598384ca5cc95f';
|
||||
String _$kitsuHash() => r'0c560ca99e2858b38af183491303d9cdcc9c0d92';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import 'package:mangayomi/models/track_search.dart';
|
|||
import 'package:mangayomi/modules/more/settings/track/myanimelist/model.dart';
|
||||
import 'package:mangayomi/modules/more/settings/track/providers/track_providers.dart';
|
||||
import 'package:mangayomi/services/http/m_client.dart';
|
||||
import 'package:mangayomi/utils/log/logger.dart';
|
||||
import 'base_tracker.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'myanimelist.g.dart';
|
||||
|
|
@ -59,13 +60,18 @@ class MyAnimeList extends _$MyAnimeList implements BaseTracker {
|
|||
}
|
||||
}
|
||||
|
||||
Future<String> _getAccessToken() async {
|
||||
Future<String> _getAccessToken({bool bypass = false}) async {
|
||||
final track = ref.read(tracksProvider(syncId: syncId));
|
||||
final mALOAuth = OAuth.fromJson(
|
||||
jsonDecode(track!.oAuth!) as Map<String, dynamic>,
|
||||
);
|
||||
final expiresIn = DateTime.fromMillisecondsSinceEpoch(mALOAuth.expiresIn!);
|
||||
if (DateTime.now().isBefore(expiresIn)) return mALOAuth.accessToken!;
|
||||
if (!bypass &&
|
||||
(ref.read(tracksProvider(syncId: syncId))?.refreshing ?? false)) {
|
||||
return mALOAuth.accessToken!;
|
||||
}
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(true);
|
||||
final refreshed = await _tryRefreshToken(mALOAuth);
|
||||
if (refreshed == null) {
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).logout();
|
||||
|
|
@ -74,6 +80,8 @@ class MyAnimeList extends _$MyAnimeList implements BaseTracker {
|
|||
}
|
||||
final username = await _getUserName(refreshed.accessToken!);
|
||||
_saveOAuth(username, refreshed);
|
||||
await Future.delayed(Duration(seconds: 3));
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(false);
|
||||
return refreshed.accessToken!;
|
||||
}
|
||||
|
||||
|
|
@ -438,14 +446,29 @@ class MyAnimeList extends _$MyAnimeList implements BaseTracker {
|
|||
headers: {'Authorization': 'Bearer $accessToken'},
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
String displayScore(int score) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
(int, int) getScoreValue() {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> checkRefresh() async {
|
||||
try {
|
||||
await _getAccessToken(bypass: true);
|
||||
AppLogger.log("Refreshed MAL token!");
|
||||
return true;
|
||||
} catch (e) {
|
||||
AppLogger.log("Failed to refresh MAL token:", logLevel: LogLevel.error);
|
||||
AppLogger.log(e.toString(), logLevel: LogLevel.error);
|
||||
return false;
|
||||
} finally {
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'myanimelist.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$myAnimeListHash() => r'9846f76ce69f952d20cc1e8edbc5ca565cd4e7c9';
|
||||
String _$myAnimeListHash() => r'c6812dbc8c56494e4776f80a2b0f402bf5e00996';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
|
|||
|
|
@ -418,4 +418,10 @@ class Simkl extends _$Simkl implements BaseTracker {
|
|||
(int, int) getScoreValue() {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> checkRefresh() async {
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'simkl.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$simklHash() => r'3b8ff48675ba743d39aef595dc6cd70f4bd404cf';
|
||||
String _$simklHash() => r'b55f4a85c66fbb4456e0499f15376d314cd0bf90';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -33,10 +33,7 @@ abstract class _$Simkl extends BuildlessAutoDisposeNotifier<void> {
|
|||
late final int syncId;
|
||||
late final ItemType? itemType;
|
||||
|
||||
void build({
|
||||
required int syncId,
|
||||
required ItemType? itemType,
|
||||
});
|
||||
void build({required int syncId, required ItemType? itemType});
|
||||
}
|
||||
|
||||
/// See also [Simkl].
|
||||
|
|
@ -49,24 +46,13 @@ class SimklFamily extends Family<void> {
|
|||
const SimklFamily();
|
||||
|
||||
/// See also [Simkl].
|
||||
SimklProvider call({
|
||||
required int syncId,
|
||||
required ItemType? itemType,
|
||||
}) {
|
||||
return SimklProvider(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
);
|
||||
SimklProvider call({required int syncId, required ItemType? itemType}) {
|
||||
return SimklProvider(syncId: syncId, itemType: itemType);
|
||||
}
|
||||
|
||||
@override
|
||||
SimklProvider getProviderOverride(
|
||||
covariant SimklProvider provider,
|
||||
) {
|
||||
return call(
|
||||
syncId: provider.syncId,
|
||||
itemType: provider.itemType,
|
||||
);
|
||||
SimklProvider getProviderOverride(covariant SimklProvider provider) {
|
||||
return call(syncId: provider.syncId, itemType: provider.itemType);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
|
@ -87,24 +73,21 @@ class SimklFamily extends Family<void> {
|
|||
/// See also [Simkl].
|
||||
class SimklProvider extends AutoDisposeNotifierProviderImpl<Simkl, void> {
|
||||
/// See also [Simkl].
|
||||
SimklProvider({
|
||||
required int syncId,
|
||||
required ItemType? itemType,
|
||||
}) : this._internal(
|
||||
() => Simkl()
|
||||
..syncId = syncId
|
||||
..itemType = itemType,
|
||||
from: simklProvider,
|
||||
name: r'simklProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$simklHash,
|
||||
dependencies: SimklFamily._dependencies,
|
||||
allTransitiveDependencies: SimklFamily._allTransitiveDependencies,
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
);
|
||||
SimklProvider({required int syncId, required ItemType? itemType})
|
||||
: this._internal(
|
||||
() => Simkl()
|
||||
..syncId = syncId
|
||||
..itemType = itemType,
|
||||
from: simklProvider,
|
||||
name: r'simklProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$simklHash,
|
||||
dependencies: SimklFamily._dependencies,
|
||||
allTransitiveDependencies: SimklFamily._allTransitiveDependencies,
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
);
|
||||
|
||||
SimklProvider._internal(
|
||||
super._createNotifier, {
|
||||
|
|
@ -121,13 +104,8 @@ class SimklProvider extends AutoDisposeNotifierProviderImpl<Simkl, void> {
|
|||
final ItemType? itemType;
|
||||
|
||||
@override
|
||||
void runNotifierBuild(
|
||||
covariant Simkl notifier,
|
||||
) {
|
||||
return notifier.build(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
);
|
||||
void runNotifierBuild(covariant Simkl notifier) {
|
||||
return notifier.build(syncId: syncId, itemType: itemType);
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -182,7 +160,8 @@ mixin SimklRef on AutoDisposeNotifierProviderRef<void> {
|
|||
}
|
||||
|
||||
class _SimklProviderElement
|
||||
extends AutoDisposeNotifierProviderElement<Simkl, void> with SimklRef {
|
||||
extends AutoDisposeNotifierProviderElement<Simkl, void>
|
||||
with SimklRef {
|
||||
_SimklProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
|
|
@ -190,5 +169,6 @@ class _SimklProviderElement
|
|||
@override
|
||||
ItemType? get itemType => (origin as SimklProvider).itemType;
|
||||
}
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import 'package:mangayomi/models/track_search.dart';
|
|||
import 'package:mangayomi/modules/more/settings/track/myanimelist/model.dart';
|
||||
import 'package:mangayomi/modules/more/settings/track/providers/track_providers.dart';
|
||||
import 'package:mangayomi/services/http/m_client.dart';
|
||||
import 'package:mangayomi/utils/log/logger.dart';
|
||||
import 'base_tracker.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
part 'trakt_tv.g.dart';
|
||||
|
|
@ -293,13 +294,18 @@ class TraktTv extends _$TraktTv implements BaseTracker {
|
|||
return track;
|
||||
}
|
||||
|
||||
Future<String> _getAccessToken() async {
|
||||
Future<String> _getAccessToken({bool bypass = false}) async {
|
||||
final track = ref.read(tracksProvider(syncId: syncId));
|
||||
final mALOAuth = OAuth.fromJson(
|
||||
jsonDecode(track!.oAuth!) as Map<String, dynamic>,
|
||||
);
|
||||
final expiresIn = DateTime.fromMillisecondsSinceEpoch(mALOAuth.expiresIn!);
|
||||
if (DateTime.now().isBefore(expiresIn)) return mALOAuth.accessToken!;
|
||||
if (!bypass &&
|
||||
(ref.read(tracksProvider(syncId: syncId))?.refreshing ?? false)) {
|
||||
return mALOAuth.accessToken!;
|
||||
}
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(true);
|
||||
final refreshed = await _tryRefreshToken(mALOAuth);
|
||||
if (refreshed == null) {
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).logout();
|
||||
|
|
@ -308,6 +314,8 @@ class TraktTv extends _$TraktTv implements BaseTracker {
|
|||
}
|
||||
final username = await _getUserName(refreshed.accessToken!);
|
||||
_saveOAuth(username, refreshed);
|
||||
await Future.delayed(Duration(seconds: 3));
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(false);
|
||||
return refreshed.accessToken!;
|
||||
}
|
||||
|
||||
|
|
@ -315,16 +323,17 @@ class TraktTv extends _$TraktTv implements BaseTracker {
|
|||
String primaryClientId = oldOAuth.clientId ?? _clientId;
|
||||
|
||||
Future<OAuth?> tryRefresh(String cid) async {
|
||||
final params = {
|
||||
'refresh_token': oldOAuth.refreshToken,
|
||||
'client_id': cid,
|
||||
'client_secret': _clientSecret,
|
||||
'redirect_uri': _redirectUri,
|
||||
'grant_type': 'refresh_token',
|
||||
};
|
||||
final response = await http.post(
|
||||
Uri.parse('$_baseOAuthUrl/token'),
|
||||
body: {
|
||||
'refresh_token': oldOAuth.refreshToken,
|
||||
'client_id': cid,
|
||||
'client_secret': _clientSecret,
|
||||
'redirect_uri': _redirectUri,
|
||||
'grant_type': 'refresh_token',
|
||||
},
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: jsonEncode(params),
|
||||
);
|
||||
if (response.statusCode != 200) return null;
|
||||
final body = jsonDecode(response.body) as Map<String, dynamic>;
|
||||
|
|
@ -377,7 +386,7 @@ class TraktTv extends _$TraktTv implements BaseTracker {
|
|||
'grant_type': 'authorization_code',
|
||||
};
|
||||
final response = await http.post(
|
||||
Uri.parse('$_baseApiUrl/oauth/token'),
|
||||
Uri.parse('$_baseOAuthUrl/token'),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: jsonEncode(params),
|
||||
);
|
||||
|
|
@ -422,4 +431,22 @@ class TraktTv extends _$TraktTv implements BaseTracker {
|
|||
(int, int) getScoreValue() {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> checkRefresh() async {
|
||||
try {
|
||||
await _getAccessToken(bypass: true);
|
||||
AppLogger.log("Refreshed Trakt.tv token!");
|
||||
return true;
|
||||
} catch (e) {
|
||||
AppLogger.log(
|
||||
"Failed to refresh Trakt.tv token:",
|
||||
logLevel: LogLevel.error,
|
||||
);
|
||||
AppLogger.log(e.toString(), logLevel: LogLevel.error);
|
||||
return false;
|
||||
} finally {
|
||||
ref.read(tracksProvider(syncId: syncId).notifier).setRefreshing(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ part of 'trakt_tv.dart';
|
|||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$traktTvHash() => r'de97ae0edbc905d07af2ce8758441fba6cdd7be2';
|
||||
String _$traktTvHash() => r'1ae8a5c79cb6b5fc6c5d9db61ed9307deeb450ed';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
|
|
@ -33,10 +33,7 @@ abstract class _$TraktTv extends BuildlessAutoDisposeNotifier<void> {
|
|||
late final int syncId;
|
||||
late final ItemType? itemType;
|
||||
|
||||
void build({
|
||||
required int syncId,
|
||||
required ItemType? itemType,
|
||||
});
|
||||
void build({required int syncId, required ItemType? itemType});
|
||||
}
|
||||
|
||||
/// See also [TraktTv].
|
||||
|
|
@ -49,24 +46,13 @@ class TraktTvFamily extends Family<void> {
|
|||
const TraktTvFamily();
|
||||
|
||||
/// See also [TraktTv].
|
||||
TraktTvProvider call({
|
||||
required int syncId,
|
||||
required ItemType? itemType,
|
||||
}) {
|
||||
return TraktTvProvider(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
);
|
||||
TraktTvProvider call({required int syncId, required ItemType? itemType}) {
|
||||
return TraktTvProvider(syncId: syncId, itemType: itemType);
|
||||
}
|
||||
|
||||
@override
|
||||
TraktTvProvider getProviderOverride(
|
||||
covariant TraktTvProvider provider,
|
||||
) {
|
||||
return call(
|
||||
syncId: provider.syncId,
|
||||
itemType: provider.itemType,
|
||||
);
|
||||
TraktTvProvider getProviderOverride(covariant TraktTvProvider provider) {
|
||||
return call(syncId: provider.syncId, itemType: provider.itemType);
|
||||
}
|
||||
|
||||
static const Iterable<ProviderOrFamily>? _dependencies = null;
|
||||
|
|
@ -87,24 +73,21 @@ class TraktTvFamily extends Family<void> {
|
|||
/// See also [TraktTv].
|
||||
class TraktTvProvider extends AutoDisposeNotifierProviderImpl<TraktTv, void> {
|
||||
/// See also [TraktTv].
|
||||
TraktTvProvider({
|
||||
required int syncId,
|
||||
required ItemType? itemType,
|
||||
}) : this._internal(
|
||||
() => TraktTv()
|
||||
..syncId = syncId
|
||||
..itemType = itemType,
|
||||
from: traktTvProvider,
|
||||
name: r'traktTvProvider',
|
||||
debugGetCreateSourceHash:
|
||||
const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$traktTvHash,
|
||||
dependencies: TraktTvFamily._dependencies,
|
||||
allTransitiveDependencies: TraktTvFamily._allTransitiveDependencies,
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
);
|
||||
TraktTvProvider({required int syncId, required ItemType? itemType})
|
||||
: this._internal(
|
||||
() => TraktTv()
|
||||
..syncId = syncId
|
||||
..itemType = itemType,
|
||||
from: traktTvProvider,
|
||||
name: r'traktTvProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$traktTvHash,
|
||||
dependencies: TraktTvFamily._dependencies,
|
||||
allTransitiveDependencies: TraktTvFamily._allTransitiveDependencies,
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
);
|
||||
|
||||
TraktTvProvider._internal(
|
||||
super._createNotifier, {
|
||||
|
|
@ -121,13 +104,8 @@ class TraktTvProvider extends AutoDisposeNotifierProviderImpl<TraktTv, void> {
|
|||
final ItemType? itemType;
|
||||
|
||||
@override
|
||||
void runNotifierBuild(
|
||||
covariant TraktTv notifier,
|
||||
) {
|
||||
return notifier.build(
|
||||
syncId: syncId,
|
||||
itemType: itemType,
|
||||
);
|
||||
void runNotifierBuild(covariant TraktTv notifier) {
|
||||
return notifier.build(syncId: syncId, itemType: itemType);
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -182,7 +160,8 @@ mixin TraktTvRef on AutoDisposeNotifierProviderRef<void> {
|
|||
}
|
||||
|
||||
class _TraktTvProviderElement
|
||||
extends AutoDisposeNotifierProviderElement<TraktTv, void> with TraktTvRef {
|
||||
extends AutoDisposeNotifierProviderElement<TraktTv, void>
|
||||
with TraktTvRef {
|
||||
_TraktTvProviderElement(super.provider);
|
||||
|
||||
@override
|
||||
|
|
@ -190,5 +169,6 @@ class _TraktTvProviderElement
|
|||
@override
|
||||
ItemType? get itemType => (origin as TraktTvProvider).itemType;
|
||||
}
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
// dart format width=80
|
||||
// coverage:ignore-file
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint
|
||||
|
|
@ -9,667 +10,268 @@ part of 'client.dart';
|
|||
// FreezedGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// dart format off
|
||||
T _$identity<T>(T value) => value;
|
||||
|
||||
final _privateConstructorUsedError = UnsupportedError(
|
||||
'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
|
||||
|
||||
/// @nodoc
|
||||
mixin _$ProxySettings {
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() noProxy,
|
||||
required TResult Function(List<CustomProxy> field0) customProxyList,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? noProxy,
|
||||
TResult? Function(List<CustomProxy> field0)? customProxyList,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? noProxy,
|
||||
TResult Function(List<CustomProxy> field0)? customProxyList,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(ProxySettings_NoProxy value) noProxy,
|
||||
required TResult Function(ProxySettings_CustomProxyList value)
|
||||
customProxyList,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(ProxySettings_NoProxy value)? noProxy,
|
||||
TResult? Function(ProxySettings_CustomProxyList value)? customProxyList,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(ProxySettings_NoProxy value)? noProxy,
|
||||
TResult Function(ProxySettings_CustomProxyList value)? customProxyList,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is ProxySettings);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ProxySettings()';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class $ProxySettingsCopyWith<$Res> {
|
||||
factory $ProxySettingsCopyWith(
|
||||
ProxySettings value, $Res Function(ProxySettings) then) =
|
||||
_$ProxySettingsCopyWithImpl<$Res, ProxySettings>;
|
||||
class $ProxySettingsCopyWith<$Res> {
|
||||
$ProxySettingsCopyWith(ProxySettings _, $Res Function(ProxySettings) __);
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class _$ProxySettingsCopyWithImpl<$Res, $Val extends ProxySettings>
|
||||
implements $ProxySettingsCopyWith<$Res> {
|
||||
_$ProxySettingsCopyWithImpl(this._value, this._then);
|
||||
|
||||
// ignore: unused_field
|
||||
final $Val _value;
|
||||
// ignore: unused_field
|
||||
final $Res Function($Val) _then;
|
||||
|
||||
/// Create a copy of ProxySettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$ProxySettings_NoProxyImplCopyWith<$Res> {
|
||||
factory _$$ProxySettings_NoProxyImplCopyWith(
|
||||
_$ProxySettings_NoProxyImpl value,
|
||||
$Res Function(_$ProxySettings_NoProxyImpl) then) =
|
||||
__$$ProxySettings_NoProxyImplCopyWithImpl<$Res>;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$ProxySettings_NoProxyImplCopyWithImpl<$Res>
|
||||
extends _$ProxySettingsCopyWithImpl<$Res, _$ProxySettings_NoProxyImpl>
|
||||
implements _$$ProxySettings_NoProxyImplCopyWith<$Res> {
|
||||
__$$ProxySettings_NoProxyImplCopyWithImpl(_$ProxySettings_NoProxyImpl _value,
|
||||
$Res Function(_$ProxySettings_NoProxyImpl) _then)
|
||||
: super(_value, _then);
|
||||
|
||||
/// Create a copy of ProxySettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$ProxySettings_NoProxyImpl extends ProxySettings_NoProxy {
|
||||
const _$ProxySettings_NoProxyImpl() : super._();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ProxySettings.noProxy()';
|
||||
}
|
||||
class ProxySettings_NoProxy extends ProxySettings {
|
||||
const ProxySettings_NoProxy(): super._();
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$ProxySettings_NoProxyImpl);
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() noProxy,
|
||||
required TResult Function(List<CustomProxy> field0) customProxyList,
|
||||
}) {
|
||||
return noProxy();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? noProxy,
|
||||
TResult? Function(List<CustomProxy> field0)? customProxyList,
|
||||
}) {
|
||||
return noProxy?.call();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? noProxy,
|
||||
TResult Function(List<CustomProxy> field0)? customProxyList,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (noProxy != null) {
|
||||
return noProxy();
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(ProxySettings_NoProxy value) noProxy,
|
||||
required TResult Function(ProxySettings_CustomProxyList value)
|
||||
customProxyList,
|
||||
}) {
|
||||
return noProxy(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(ProxySettings_NoProxy value)? noProxy,
|
||||
TResult? Function(ProxySettings_CustomProxyList value)? customProxyList,
|
||||
}) {
|
||||
return noProxy?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(ProxySettings_NoProxy value)? noProxy,
|
||||
TResult Function(ProxySettings_CustomProxyList value)? customProxyList,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (noProxy != null) {
|
||||
return noProxy(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is ProxySettings_NoProxy);
|
||||
}
|
||||
|
||||
abstract class ProxySettings_NoProxy extends ProxySettings {
|
||||
const factory ProxySettings_NoProxy() = _$ProxySettings_NoProxyImpl;
|
||||
const ProxySettings_NoProxy._() : super._();
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ProxySettings.noProxy()';
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$ProxySettings_CustomProxyListImplCopyWith<$Res> {
|
||||
factory _$$ProxySettings_CustomProxyListImplCopyWith(
|
||||
_$ProxySettings_CustomProxyListImpl value,
|
||||
$Res Function(_$ProxySettings_CustomProxyListImpl) then) =
|
||||
__$$ProxySettings_CustomProxyListImplCopyWithImpl<$Res>;
|
||||
@useResult
|
||||
$Res call({List<CustomProxy> field0});
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$ProxySettings_CustomProxyListImplCopyWithImpl<$Res>
|
||||
extends _$ProxySettingsCopyWithImpl<$Res,
|
||||
_$ProxySettings_CustomProxyListImpl>
|
||||
implements _$$ProxySettings_CustomProxyListImplCopyWith<$Res> {
|
||||
__$$ProxySettings_CustomProxyListImplCopyWithImpl(
|
||||
_$ProxySettings_CustomProxyListImpl _value,
|
||||
$Res Function(_$ProxySettings_CustomProxyListImpl) _then)
|
||||
: super(_value, _then);
|
||||
|
||||
/// Create a copy of ProxySettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? field0 = null,
|
||||
}) {
|
||||
return _then(_$ProxySettings_CustomProxyListImpl(
|
||||
null == field0
|
||||
? _value._field0
|
||||
: field0 // ignore: cast_nullable_to_non_nullable
|
||||
as List<CustomProxy>,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$ProxySettings_CustomProxyListImpl
|
||||
extends ProxySettings_CustomProxyList {
|
||||
const _$ProxySettings_CustomProxyListImpl(final List<CustomProxy> field0)
|
||||
: _field0 = field0,
|
||||
super._();
|
||||
|
||||
final List<CustomProxy> _field0;
|
||||
@override
|
||||
List<CustomProxy> get field0 {
|
||||
if (_field0 is EqualUnmodifiableListView) return _field0;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableListView(_field0);
|
||||
}
|
||||
class ProxySettings_CustomProxyList extends ProxySettings {
|
||||
const ProxySettings_CustomProxyList(final List<CustomProxy> field0): _field0 = field0,super._();
|
||||
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ProxySettings.customProxyList(field0: $field0)';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$ProxySettings_CustomProxyListImpl &&
|
||||
const DeepCollectionEquality().equals(other._field0, _field0));
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode =>
|
||||
Object.hash(runtimeType, const DeepCollectionEquality().hash(_field0));
|
||||
|
||||
/// Create a copy of ProxySettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
_$$ProxySettings_CustomProxyListImplCopyWith<
|
||||
_$ProxySettings_CustomProxyListImpl>
|
||||
get copyWith => __$$ProxySettings_CustomProxyListImplCopyWithImpl<
|
||||
_$ProxySettings_CustomProxyListImpl>(this, _$identity);
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() noProxy,
|
||||
required TResult Function(List<CustomProxy> field0) customProxyList,
|
||||
}) {
|
||||
return customProxyList(field0);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? noProxy,
|
||||
TResult? Function(List<CustomProxy> field0)? customProxyList,
|
||||
}) {
|
||||
return customProxyList?.call(field0);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? noProxy,
|
||||
TResult Function(List<CustomProxy> field0)? customProxyList,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (customProxyList != null) {
|
||||
return customProxyList(field0);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(ProxySettings_NoProxy value) noProxy,
|
||||
required TResult Function(ProxySettings_CustomProxyList value)
|
||||
customProxyList,
|
||||
}) {
|
||||
return customProxyList(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(ProxySettings_NoProxy value)? noProxy,
|
||||
TResult? Function(ProxySettings_CustomProxyList value)? customProxyList,
|
||||
}) {
|
||||
return customProxyList?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(ProxySettings_NoProxy value)? noProxy,
|
||||
TResult Function(ProxySettings_CustomProxyList value)? customProxyList,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (customProxyList != null) {
|
||||
return customProxyList(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
final List<CustomProxy> _field0;
|
||||
List<CustomProxy> get field0 {
|
||||
if (_field0 is EqualUnmodifiableListView) return _field0;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableListView(_field0);
|
||||
}
|
||||
|
||||
abstract class ProxySettings_CustomProxyList extends ProxySettings {
|
||||
const factory ProxySettings_CustomProxyList(final List<CustomProxy> field0) =
|
||||
_$ProxySettings_CustomProxyListImpl;
|
||||
const ProxySettings_CustomProxyList._() : super._();
|
||||
|
||||
List<CustomProxy> get field0;
|
||||
/// Create a copy of ProxySettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
$ProxySettings_CustomProxyListCopyWith<ProxySettings_CustomProxyList> get copyWith => _$ProxySettings_CustomProxyListCopyWithImpl<ProxySettings_CustomProxyList>(this, _$identity);
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is ProxySettings_CustomProxyList&&const DeepCollectionEquality().equals(other._field0, _field0));
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(_field0));
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'ProxySettings.customProxyList(field0: $field0)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class $ProxySettings_CustomProxyListCopyWith<$Res> implements $ProxySettingsCopyWith<$Res> {
|
||||
factory $ProxySettings_CustomProxyListCopyWith(ProxySettings_CustomProxyList value, $Res Function(ProxySettings_CustomProxyList) _then) = _$ProxySettings_CustomProxyListCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
List<CustomProxy> field0
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class _$ProxySettings_CustomProxyListCopyWithImpl<$Res>
|
||||
implements $ProxySettings_CustomProxyListCopyWith<$Res> {
|
||||
_$ProxySettings_CustomProxyListCopyWithImpl(this._self, this._then);
|
||||
|
||||
final ProxySettings_CustomProxyList _self;
|
||||
final $Res Function(ProxySettings_CustomProxyList) _then;
|
||||
|
||||
/// Create a copy of ProxySettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? field0 = null,}) {
|
||||
return _then(ProxySettings_CustomProxyList(
|
||||
null == field0 ? _self._field0 : field0 // ignore: cast_nullable_to_non_nullable
|
||||
as List<CustomProxy>,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
/// Create a copy of ProxySettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
_$$ProxySettings_CustomProxyListImplCopyWith<
|
||||
_$ProxySettings_CustomProxyListImpl>
|
||||
get copyWith => throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
mixin _$RedirectSettings {
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() noRedirect,
|
||||
required TResult Function(int field0) limitedRedirects,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? noRedirect,
|
||||
TResult? Function(int field0)? limitedRedirects,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? noRedirect,
|
||||
TResult Function(int field0)? limitedRedirects,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(RedirectSettings_NoRedirect value) noRedirect,
|
||||
required TResult Function(RedirectSettings_LimitedRedirects value)
|
||||
limitedRedirects,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(RedirectSettings_NoRedirect value)? noRedirect,
|
||||
TResult? Function(RedirectSettings_LimitedRedirects value)?
|
||||
limitedRedirects,
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(RedirectSettings_NoRedirect value)? noRedirect,
|
||||
TResult Function(RedirectSettings_LimitedRedirects value)? limitedRedirects,
|
||||
required TResult orElse(),
|
||||
}) =>
|
||||
throw _privateConstructorUsedError;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is RedirectSettings);
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'RedirectSettings()';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class $RedirectSettingsCopyWith<$Res> {
|
||||
factory $RedirectSettingsCopyWith(
|
||||
RedirectSettings value, $Res Function(RedirectSettings) then) =
|
||||
_$RedirectSettingsCopyWithImpl<$Res, RedirectSettings>;
|
||||
class $RedirectSettingsCopyWith<$Res> {
|
||||
$RedirectSettingsCopyWith(RedirectSettings _, $Res Function(RedirectSettings) __);
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class _$RedirectSettingsCopyWithImpl<$Res, $Val extends RedirectSettings>
|
||||
implements $RedirectSettingsCopyWith<$Res> {
|
||||
_$RedirectSettingsCopyWithImpl(this._value, this._then);
|
||||
|
||||
// ignore: unused_field
|
||||
final $Val _value;
|
||||
// ignore: unused_field
|
||||
final $Res Function($Val) _then;
|
||||
|
||||
/// Create a copy of RedirectSettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$RedirectSettings_NoRedirectImplCopyWith<$Res> {
|
||||
factory _$$RedirectSettings_NoRedirectImplCopyWith(
|
||||
_$RedirectSettings_NoRedirectImpl value,
|
||||
$Res Function(_$RedirectSettings_NoRedirectImpl) then) =
|
||||
__$$RedirectSettings_NoRedirectImplCopyWithImpl<$Res>;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$RedirectSettings_NoRedirectImplCopyWithImpl<$Res>
|
||||
extends _$RedirectSettingsCopyWithImpl<$Res,
|
||||
_$RedirectSettings_NoRedirectImpl>
|
||||
implements _$$RedirectSettings_NoRedirectImplCopyWith<$Res> {
|
||||
__$$RedirectSettings_NoRedirectImplCopyWithImpl(
|
||||
_$RedirectSettings_NoRedirectImpl _value,
|
||||
$Res Function(_$RedirectSettings_NoRedirectImpl) _then)
|
||||
: super(_value, _then);
|
||||
|
||||
/// Create a copy of RedirectSettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$RedirectSettings_NoRedirectImpl extends RedirectSettings_NoRedirect {
|
||||
const _$RedirectSettings_NoRedirectImpl() : super._();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'RedirectSettings.noRedirect()';
|
||||
}
|
||||
class RedirectSettings_NoRedirect extends RedirectSettings {
|
||||
const RedirectSettings_NoRedirect(): super._();
|
||||
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$RedirectSettings_NoRedirectImpl);
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() noRedirect,
|
||||
required TResult Function(int field0) limitedRedirects,
|
||||
}) {
|
||||
return noRedirect();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? noRedirect,
|
||||
TResult? Function(int field0)? limitedRedirects,
|
||||
}) {
|
||||
return noRedirect?.call();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? noRedirect,
|
||||
TResult Function(int field0)? limitedRedirects,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (noRedirect != null) {
|
||||
return noRedirect();
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(RedirectSettings_NoRedirect value) noRedirect,
|
||||
required TResult Function(RedirectSettings_LimitedRedirects value)
|
||||
limitedRedirects,
|
||||
}) {
|
||||
return noRedirect(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(RedirectSettings_NoRedirect value)? noRedirect,
|
||||
TResult? Function(RedirectSettings_LimitedRedirects value)?
|
||||
limitedRedirects,
|
||||
}) {
|
||||
return noRedirect?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(RedirectSettings_NoRedirect value)? noRedirect,
|
||||
TResult Function(RedirectSettings_LimitedRedirects value)? limitedRedirects,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (noRedirect != null) {
|
||||
return noRedirect(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is RedirectSettings_NoRedirect);
|
||||
}
|
||||
|
||||
abstract class RedirectSettings_NoRedirect extends RedirectSettings {
|
||||
const factory RedirectSettings_NoRedirect() =
|
||||
_$RedirectSettings_NoRedirectImpl;
|
||||
const RedirectSettings_NoRedirect._() : super._();
|
||||
|
||||
@override
|
||||
int get hashCode => runtimeType.hashCode;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'RedirectSettings.noRedirect()';
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$RedirectSettings_LimitedRedirectsImplCopyWith<$Res> {
|
||||
factory _$$RedirectSettings_LimitedRedirectsImplCopyWith(
|
||||
_$RedirectSettings_LimitedRedirectsImpl value,
|
||||
$Res Function(_$RedirectSettings_LimitedRedirectsImpl) then) =
|
||||
__$$RedirectSettings_LimitedRedirectsImplCopyWithImpl<$Res>;
|
||||
@useResult
|
||||
$Res call({int field0});
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$RedirectSettings_LimitedRedirectsImplCopyWithImpl<$Res>
|
||||
extends _$RedirectSettingsCopyWithImpl<$Res,
|
||||
_$RedirectSettings_LimitedRedirectsImpl>
|
||||
implements _$$RedirectSettings_LimitedRedirectsImplCopyWith<$Res> {
|
||||
__$$RedirectSettings_LimitedRedirectsImplCopyWithImpl(
|
||||
_$RedirectSettings_LimitedRedirectsImpl _value,
|
||||
$Res Function(_$RedirectSettings_LimitedRedirectsImpl) _then)
|
||||
: super(_value, _then);
|
||||
|
||||
/// Create a copy of RedirectSettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? field0 = null,
|
||||
}) {
|
||||
return _then(_$RedirectSettings_LimitedRedirectsImpl(
|
||||
null == field0
|
||||
? _value.field0
|
||||
: field0 // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$RedirectSettings_LimitedRedirectsImpl
|
||||
extends RedirectSettings_LimitedRedirects {
|
||||
const _$RedirectSettings_LimitedRedirectsImpl(this.field0) : super._();
|
||||
|
||||
@override
|
||||
final int field0;
|
||||
class RedirectSettings_LimitedRedirects extends RedirectSettings {
|
||||
const RedirectSettings_LimitedRedirects(this.field0): super._();
|
||||
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'RedirectSettings.limitedRedirects(field0: $field0)';
|
||||
}
|
||||
final int field0;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$RedirectSettings_LimitedRedirectsImpl &&
|
||||
(identical(other.field0, field0) || other.field0 == field0));
|
||||
}
|
||||
/// Create a copy of RedirectSettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@pragma('vm:prefer-inline')
|
||||
$RedirectSettings_LimitedRedirectsCopyWith<RedirectSettings_LimitedRedirects> get copyWith => _$RedirectSettings_LimitedRedirectsCopyWithImpl<RedirectSettings_LimitedRedirects>(this, _$identity);
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType, field0);
|
||||
|
||||
/// Create a copy of RedirectSettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
_$$RedirectSettings_LimitedRedirectsImplCopyWith<
|
||||
_$RedirectSettings_LimitedRedirectsImpl>
|
||||
get copyWith => __$$RedirectSettings_LimitedRedirectsImplCopyWithImpl<
|
||||
_$RedirectSettings_LimitedRedirectsImpl>(this, _$identity);
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult when<TResult extends Object?>({
|
||||
required TResult Function() noRedirect,
|
||||
required TResult Function(int field0) limitedRedirects,
|
||||
}) {
|
||||
return limitedRedirects(field0);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? whenOrNull<TResult extends Object?>({
|
||||
TResult? Function()? noRedirect,
|
||||
TResult? Function(int field0)? limitedRedirects,
|
||||
}) {
|
||||
return limitedRedirects?.call(field0);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeWhen<TResult extends Object?>({
|
||||
TResult Function()? noRedirect,
|
||||
TResult Function(int field0)? limitedRedirects,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (limitedRedirects != null) {
|
||||
return limitedRedirects(field0);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult map<TResult extends Object?>({
|
||||
required TResult Function(RedirectSettings_NoRedirect value) noRedirect,
|
||||
required TResult Function(RedirectSettings_LimitedRedirects value)
|
||||
limitedRedirects,
|
||||
}) {
|
||||
return limitedRedirects(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult? mapOrNull<TResult extends Object?>({
|
||||
TResult? Function(RedirectSettings_NoRedirect value)? noRedirect,
|
||||
TResult? Function(RedirectSettings_LimitedRedirects value)?
|
||||
limitedRedirects,
|
||||
}) {
|
||||
return limitedRedirects?.call(this);
|
||||
}
|
||||
|
||||
@override
|
||||
@optionalTypeArgs
|
||||
TResult maybeMap<TResult extends Object?>({
|
||||
TResult Function(RedirectSettings_NoRedirect value)? noRedirect,
|
||||
TResult Function(RedirectSettings_LimitedRedirects value)? limitedRedirects,
|
||||
required TResult orElse(),
|
||||
}) {
|
||||
if (limitedRedirects != null) {
|
||||
return limitedRedirects(this);
|
||||
}
|
||||
return orElse();
|
||||
}
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) || (other.runtimeType == runtimeType&&other is RedirectSettings_LimitedRedirects&&(identical(other.field0, field0) || other.field0 == field0));
|
||||
}
|
||||
|
||||
abstract class RedirectSettings_LimitedRedirects extends RedirectSettings {
|
||||
const factory RedirectSettings_LimitedRedirects(final int field0) =
|
||||
_$RedirectSettings_LimitedRedirectsImpl;
|
||||
const RedirectSettings_LimitedRedirects._() : super._();
|
||||
|
||||
int get field0;
|
||||
@override
|
||||
int get hashCode => Object.hash(runtimeType,field0);
|
||||
|
||||
/// Create a copy of RedirectSettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
_$$RedirectSettings_LimitedRedirectsImplCopyWith<
|
||||
_$RedirectSettings_LimitedRedirectsImpl>
|
||||
get copyWith => throw _privateConstructorUsedError;
|
||||
@override
|
||||
String toString() {
|
||||
return 'RedirectSettings.limitedRedirects(field0: $field0)';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract mixin class $RedirectSettings_LimitedRedirectsCopyWith<$Res> implements $RedirectSettingsCopyWith<$Res> {
|
||||
factory $RedirectSettings_LimitedRedirectsCopyWith(RedirectSettings_LimitedRedirects value, $Res Function(RedirectSettings_LimitedRedirects) _then) = _$RedirectSettings_LimitedRedirectsCopyWithImpl;
|
||||
@useResult
|
||||
$Res call({
|
||||
int field0
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
/// @nodoc
|
||||
class _$RedirectSettings_LimitedRedirectsCopyWithImpl<$Res>
|
||||
implements $RedirectSettings_LimitedRedirectsCopyWith<$Res> {
|
||||
_$RedirectSettings_LimitedRedirectsCopyWithImpl(this._self, this._then);
|
||||
|
||||
final RedirectSettings_LimitedRedirects _self;
|
||||
final $Res Function(RedirectSettings_LimitedRedirects) _then;
|
||||
|
||||
/// Create a copy of RedirectSettings
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline') $Res call({Object? field0 = null,}) {
|
||||
return _then(RedirectSettings_LimitedRedirects(
|
||||
null == field0 ? _self.field0 : field0 // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// dart format on
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue