mirror of
https://ghfast.top/https://github.com/StarCitizenToolBox/app.git
synced 2025-07-31 18:07:21 +08:00
Init
This commit is contained in:
@ -1,121 +0,0 @@
|
||||
import 'package:fluent_ui/fluent_ui.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:starcitizen_doctor/widgets/widgets.dart';
|
||||
|
||||
import 'home_game_login_dialog_ui_model.dart';
|
||||
|
||||
class HomeGameLoginDialogUI extends HookConsumerWidget {
|
||||
final BuildContext launchContext;
|
||||
|
||||
const HomeGameLoginDialogUI(this.launchContext, {super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final loginState = ref.watch(homeGameLoginUIModelProvider);
|
||||
useEffect(() {
|
||||
ref
|
||||
.read(homeGameLoginUIModelProvider.notifier)
|
||||
.launchWebLogin(launchContext);
|
||||
return null;
|
||||
}, []);
|
||||
return ContentDialog(
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: MediaQuery.of(context).size.width * .56,
|
||||
),
|
||||
title: (loginState.loginStatus == 2)
|
||||
? null
|
||||
: Text(S.current.home_action_one_click_launch),
|
||||
content: AnimatedSize(
|
||||
duration: const Duration(milliseconds: 230),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.only(top: 12, bottom: 0),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
const Row(),
|
||||
if (loginState.loginStatus == 0) ...[
|
||||
Center(
|
||||
child: Column(
|
||||
children: [
|
||||
Text(S.current.home_title_logging_in),
|
||||
const SizedBox(height: 12),
|
||||
const ProgressRing(),
|
||||
],
|
||||
),
|
||||
),
|
||||
] else if (loginState.loginStatus == 2 ||
|
||||
loginState.loginStatus == 3) ...[
|
||||
Center(
|
||||
child: Column(
|
||||
children: [
|
||||
const SizedBox(height: 12),
|
||||
Text(
|
||||
S.current.home_login_title_welcome_back,
|
||||
style: const TextStyle(fontSize: 20),
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
if (loginState.avatarUrl != null)
|
||||
ClipRRect(
|
||||
borderRadius: BorderRadius.circular(1000),
|
||||
child: CacheNetImage(
|
||||
url: loginState.avatarUrl!,
|
||||
width: 128,
|
||||
height: 128,
|
||||
fit: BoxFit.fill,
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
Text(
|
||||
loginState.nickname ?? "",
|
||||
style: const TextStyle(
|
||||
fontSize: 24, fontWeight: FontWeight.bold),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
if (loginState.libraryData?.games != null) ...[
|
||||
Container(
|
||||
padding: const EdgeInsets.all(6),
|
||||
decoration: BoxDecoration(
|
||||
color: FluentTheme.of(context).cardColor,
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
),
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
for (final game in loginState.libraryData!.games!)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 12, right: 12),
|
||||
child: Row(
|
||||
children: [
|
||||
Icon(
|
||||
FluentIcons.skype_circle_check,
|
||||
color: Colors.green,
|
||||
),
|
||||
const SizedBox(width: 6),
|
||||
Text("${game.name}"),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 24)
|
||||
],
|
||||
const SizedBox(height: 12),
|
||||
Text(S.current.home_login_title_launching_game),
|
||||
const SizedBox(height: 12),
|
||||
const ProgressRing(),
|
||||
const SizedBox(height: 12),
|
||||
],
|
||||
),
|
||||
)
|
||||
]
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -1,227 +0,0 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:fluent_ui/fluent_ui.dart';
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:desktop_webview_window/desktop_webview_window.dart';
|
||||
import 'package:jwt_decode/jwt_decode.dart';
|
||||
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
|
||||
import 'package:starcitizen_doctor/common/utils/base_utils.dart';
|
||||
import 'package:starcitizen_doctor/common/utils/log.dart';
|
||||
import 'package:starcitizen_doctor/common/utils/provider.dart';
|
||||
import 'package:starcitizen_doctor/data/rsi_game_library_data.dart';
|
||||
import 'package:starcitizen_doctor/ui/home/home_ui_model.dart';
|
||||
import 'package:starcitizen_doctor/ui/webview/webview.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
part 'home_game_login_dialog_ui_model.freezed.dart';
|
||||
|
||||
part 'home_game_login_dialog_ui_model.g.dart';
|
||||
|
||||
@freezed
|
||||
class HomeGameLoginState with _$HomeGameLoginState {
|
||||
factory HomeGameLoginState({
|
||||
required int loginStatus,
|
||||
String? nickname,
|
||||
String? avatarUrl,
|
||||
String? authToken,
|
||||
String? webToken,
|
||||
Map? releaseInfo,
|
||||
RsiGameLibraryData? libraryData,
|
||||
String? installPath,
|
||||
bool? isDeviceSupportWinHello,
|
||||
}) = _LoginStatus;
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class HomeGameLoginUIModel extends _$HomeGameLoginUIModel {
|
||||
@override
|
||||
HomeGameLoginState build() {
|
||||
return HomeGameLoginState(loginStatus: 0);
|
||||
}
|
||||
|
||||
// ignore: avoid_build_context_in_providers
|
||||
Future<void> launchWebLogin(BuildContext context) async {
|
||||
final homeState = ref.read(homeUIModelProvider);
|
||||
if (!context.mounted) return;
|
||||
goWebView(context, S.current.home_action_login_rsi_account,
|
||||
"https://robertsspaceindustries.com/connect?jumpto=/connect",
|
||||
loginMode: true, rsiLoginCallback: (message, ok) async {
|
||||
// dPrint(
|
||||
// "======rsiLoginCallback=== $ok ===== data==\n${json.encode(message)}");
|
||||
if (message == null || !ok) {
|
||||
Navigator.pop(context);
|
||||
return;
|
||||
}
|
||||
|
||||
// final emailBox = await Hive.openBox("quick_login_email");
|
||||
final data = message["data"];
|
||||
final authToken = data["authToken"];
|
||||
final webToken = data["webToken"];
|
||||
final releaseInfo = data["releaseInfo"];
|
||||
final libraryData = RsiGameLibraryData.fromJson(data["libraryData"]);
|
||||
final avatarUrl = data["avatar"]
|
||||
?.toString()
|
||||
.replaceAll("url(\"", "")
|
||||
.replaceAll("\")", "");
|
||||
final Map<String, dynamic> payload = Jwt.parseJwt(authToken!);
|
||||
final nickname = payload["nickname"] ?? "";
|
||||
|
||||
state = state.copyWith(
|
||||
nickname: nickname,
|
||||
avatarUrl: avatarUrl,
|
||||
authToken: authToken,
|
||||
webToken: webToken,
|
||||
releaseInfo: releaseInfo,
|
||||
libraryData: libraryData,
|
||||
);
|
||||
|
||||
final buildInfoFile =
|
||||
File("${homeState.scInstalledPath}\\build_manifest.id");
|
||||
if (await buildInfoFile.exists()) {
|
||||
final buildInfo =
|
||||
json.decode(await buildInfoFile.readAsString())["Data"];
|
||||
|
||||
if (releaseInfo?["versionLabel"] != null &&
|
||||
buildInfo["RequestedP4ChangeNum"] != null) {
|
||||
if (!(releaseInfo!["versionLabel"]!
|
||||
.toString()
|
||||
.endsWith(buildInfo["RequestedP4ChangeNum"]!.toString()))) {
|
||||
if (!context.mounted) return;
|
||||
final ok = await showConfirmDialogs(
|
||||
context,
|
||||
S.current.home_login_info_game_version_outdated,
|
||||
Text(S.current.home_login_info_rsi_server_report(
|
||||
releaseInfo?["versionLabel"],
|
||||
buildInfo["RequestedP4ChangeNum"])),
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: MediaQuery.of(context).size.width * .4),
|
||||
cancel: S.current.home_login_info_action_ignore);
|
||||
if (ok == true) {
|
||||
if (!context.mounted) return;
|
||||
Navigator.pop(context);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!context.mounted) return;
|
||||
_readyForLaunch(homeState, context);
|
||||
}, useLocalization: true, homeState: homeState);
|
||||
}
|
||||
|
||||
// ignore: avoid_build_context_in_providers
|
||||
goWebView(BuildContext context, String title, String url,
|
||||
{bool useLocalization = false,
|
||||
bool loginMode = false,
|
||||
RsiLoginCallback? rsiLoginCallback,
|
||||
required HomeUIModelState homeState}) async {
|
||||
if (useLocalization) {
|
||||
const tipVersion = 2;
|
||||
final box = await Hive.openBox("app_conf");
|
||||
final skip = await box.get("skip_web_login_version", defaultValue: 0);
|
||||
if (skip != tipVersion) {
|
||||
if (!context.mounted) return;
|
||||
final ok = await showConfirmDialogs(
|
||||
context,
|
||||
S.current.home_login_action_title_box_one_click_launch,
|
||||
Text(
|
||||
S.current.home_login_info_one_click_launch_description,
|
||||
style: const TextStyle(fontSize: 16),
|
||||
),
|
||||
constraints: BoxConstraints(
|
||||
maxWidth: MediaQuery.of(context).size.width * .6));
|
||||
if (!ok) {
|
||||
if (loginMode) {
|
||||
rsiLoginCallback?.call(null, false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
await box.put("skip_web_login_version", tipVersion);
|
||||
}
|
||||
}
|
||||
if (!await WebviewWindow.isWebviewAvailable()) {
|
||||
if (!context.mounted) return;
|
||||
await showToast(
|
||||
context, S.current.home_login_action_title_need_webview2_runtime);
|
||||
if (!context.mounted) return;
|
||||
await launchUrlString(
|
||||
"https://developer.microsoft.com/en-us/microsoft-edge/webview2/");
|
||||
if (!context.mounted) return;
|
||||
Navigator.pop(context);
|
||||
return;
|
||||
}
|
||||
if (!context.mounted) return;
|
||||
final webViewModel = WebViewModel(context,
|
||||
loginMode: loginMode,
|
||||
loginCallback: rsiLoginCallback,
|
||||
loginChannel: getChannelID(homeState.scInstalledPath!));
|
||||
if (useLocalization) {
|
||||
try {
|
||||
await webViewModel
|
||||
.initLocalization(homeState.webLocalizationVersionsData!);
|
||||
} catch (_) {}
|
||||
}
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
await webViewModel.initWebView(
|
||||
title: title,
|
||||
applicationSupportDir: appGlobalState.applicationSupportDir!,
|
||||
appVersionData: appGlobalState.networkVersionData!,
|
||||
);
|
||||
await webViewModel.launch(url, appGlobalState.networkVersionData!);
|
||||
}
|
||||
|
||||
Future<void> _readyForLaunch(
|
||||
HomeUIModelState homeState,
|
||||
// ignore: avoid_build_context_in_providers
|
||||
BuildContext context) async {
|
||||
final userBox = await Hive.openBox("rsi_account_data");
|
||||
state = state.copyWith(loginStatus: 2);
|
||||
final launchData = {
|
||||
"username": userBox.get("account_email", defaultValue: ""),
|
||||
"token": state.webToken,
|
||||
"auth_token": state.authToken,
|
||||
"star_network": {
|
||||
"services_endpoint": state.releaseInfo?["servicesEndpoint"],
|
||||
"hostname": state.releaseInfo?["universeHost"],
|
||||
"port": state.releaseInfo?["universePort"],
|
||||
},
|
||||
"TMid": const Uuid().v4(),
|
||||
};
|
||||
final executable = state.releaseInfo?["executable"];
|
||||
final launchOptions = state.releaseInfo?["launchOptions"];
|
||||
// dPrint("----------launch data ====== -----------\n$launchData");
|
||||
// dPrint(
|
||||
// "----------executable data ====== -----------\n${homeState.scInstalledPath}\\$executable $launchOptions");
|
||||
|
||||
final launchFile = File("${homeState.scInstalledPath}\\loginData.json");
|
||||
if (await launchFile.exists()) {
|
||||
await launchFile.delete();
|
||||
}
|
||||
await launchFile.create();
|
||||
await launchFile.writeAsString(json.encode(launchData));
|
||||
final processorAffinity = await SystemHelper.getCpuAffinity();
|
||||
final homeUIModel = ref.read(homeUIModelProvider.notifier);
|
||||
if (!context.mounted) return;
|
||||
homeUIModel.doLaunchGame(
|
||||
context,
|
||||
'${homeState.scInstalledPath}\\$executable',
|
||||
["-no_login_dialog", ...launchOptions.toString().split(" ")],
|
||||
homeState.scInstalledPath!,
|
||||
processorAffinity);
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
if (!context.mounted) return;
|
||||
Navigator.pop(context);
|
||||
}
|
||||
|
||||
String getChannelID(String installPath) {
|
||||
if (installPath.endsWith("\\LIVE")) {
|
||||
return "LIVE";
|
||||
}
|
||||
return "PTU";
|
||||
}
|
||||
}
|
@ -1,336 +0,0 @@
|
||||
// coverage:ignore-file
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
|
||||
|
||||
part of 'home_game_login_dialog_ui_model.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// FreezedGenerator
|
||||
// **************************************************************************
|
||||
|
||||
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 _$HomeGameLoginState {
|
||||
int get loginStatus => throw _privateConstructorUsedError;
|
||||
String? get nickname => throw _privateConstructorUsedError;
|
||||
String? get avatarUrl => throw _privateConstructorUsedError;
|
||||
String? get authToken => throw _privateConstructorUsedError;
|
||||
String? get webToken => throw _privateConstructorUsedError;
|
||||
Map<dynamic, dynamic>? get releaseInfo => throw _privateConstructorUsedError;
|
||||
RsiGameLibraryData? get libraryData => throw _privateConstructorUsedError;
|
||||
String? get installPath => throw _privateConstructorUsedError;
|
||||
bool? get isDeviceSupportWinHello => throw _privateConstructorUsedError;
|
||||
|
||||
/// Create a copy of HomeGameLoginState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
$HomeGameLoginStateCopyWith<HomeGameLoginState> get copyWith =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class $HomeGameLoginStateCopyWith<$Res> {
|
||||
factory $HomeGameLoginStateCopyWith(
|
||||
HomeGameLoginState value, $Res Function(HomeGameLoginState) then) =
|
||||
_$HomeGameLoginStateCopyWithImpl<$Res, HomeGameLoginState>;
|
||||
@useResult
|
||||
$Res call(
|
||||
{int loginStatus,
|
||||
String? nickname,
|
||||
String? avatarUrl,
|
||||
String? authToken,
|
||||
String? webToken,
|
||||
Map<dynamic, dynamic>? releaseInfo,
|
||||
RsiGameLibraryData? libraryData,
|
||||
String? installPath,
|
||||
bool? isDeviceSupportWinHello});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class _$HomeGameLoginStateCopyWithImpl<$Res, $Val extends HomeGameLoginState>
|
||||
implements $HomeGameLoginStateCopyWith<$Res> {
|
||||
_$HomeGameLoginStateCopyWithImpl(this._value, this._then);
|
||||
|
||||
// ignore: unused_field
|
||||
final $Val _value;
|
||||
// ignore: unused_field
|
||||
final $Res Function($Val) _then;
|
||||
|
||||
/// Create a copy of HomeGameLoginState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? loginStatus = null,
|
||||
Object? nickname = freezed,
|
||||
Object? avatarUrl = freezed,
|
||||
Object? authToken = freezed,
|
||||
Object? webToken = freezed,
|
||||
Object? releaseInfo = freezed,
|
||||
Object? libraryData = freezed,
|
||||
Object? installPath = freezed,
|
||||
Object? isDeviceSupportWinHello = freezed,
|
||||
}) {
|
||||
return _then(_value.copyWith(
|
||||
loginStatus: null == loginStatus
|
||||
? _value.loginStatus
|
||||
: loginStatus // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
nickname: freezed == nickname
|
||||
? _value.nickname
|
||||
: nickname // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
avatarUrl: freezed == avatarUrl
|
||||
? _value.avatarUrl
|
||||
: avatarUrl // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
authToken: freezed == authToken
|
||||
? _value.authToken
|
||||
: authToken // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
webToken: freezed == webToken
|
||||
? _value.webToken
|
||||
: webToken // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
releaseInfo: freezed == releaseInfo
|
||||
? _value.releaseInfo
|
||||
: releaseInfo // ignore: cast_nullable_to_non_nullable
|
||||
as Map<dynamic, dynamic>?,
|
||||
libraryData: freezed == libraryData
|
||||
? _value.libraryData
|
||||
: libraryData // ignore: cast_nullable_to_non_nullable
|
||||
as RsiGameLibraryData?,
|
||||
installPath: freezed == installPath
|
||||
? _value.installPath
|
||||
: installPath // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
isDeviceSupportWinHello: freezed == isDeviceSupportWinHello
|
||||
? _value.isDeviceSupportWinHello
|
||||
: isDeviceSupportWinHello // ignore: cast_nullable_to_non_nullable
|
||||
as bool?,
|
||||
) as $Val);
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
abstract class _$$LoginStatusImplCopyWith<$Res>
|
||||
implements $HomeGameLoginStateCopyWith<$Res> {
|
||||
factory _$$LoginStatusImplCopyWith(
|
||||
_$LoginStatusImpl value, $Res Function(_$LoginStatusImpl) then) =
|
||||
__$$LoginStatusImplCopyWithImpl<$Res>;
|
||||
@override
|
||||
@useResult
|
||||
$Res call(
|
||||
{int loginStatus,
|
||||
String? nickname,
|
||||
String? avatarUrl,
|
||||
String? authToken,
|
||||
String? webToken,
|
||||
Map<dynamic, dynamic>? releaseInfo,
|
||||
RsiGameLibraryData? libraryData,
|
||||
String? installPath,
|
||||
bool? isDeviceSupportWinHello});
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
class __$$LoginStatusImplCopyWithImpl<$Res>
|
||||
extends _$HomeGameLoginStateCopyWithImpl<$Res, _$LoginStatusImpl>
|
||||
implements _$$LoginStatusImplCopyWith<$Res> {
|
||||
__$$LoginStatusImplCopyWithImpl(
|
||||
_$LoginStatusImpl _value, $Res Function(_$LoginStatusImpl) _then)
|
||||
: super(_value, _then);
|
||||
|
||||
/// Create a copy of HomeGameLoginState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@pragma('vm:prefer-inline')
|
||||
@override
|
||||
$Res call({
|
||||
Object? loginStatus = null,
|
||||
Object? nickname = freezed,
|
||||
Object? avatarUrl = freezed,
|
||||
Object? authToken = freezed,
|
||||
Object? webToken = freezed,
|
||||
Object? releaseInfo = freezed,
|
||||
Object? libraryData = freezed,
|
||||
Object? installPath = freezed,
|
||||
Object? isDeviceSupportWinHello = freezed,
|
||||
}) {
|
||||
return _then(_$LoginStatusImpl(
|
||||
loginStatus: null == loginStatus
|
||||
? _value.loginStatus
|
||||
: loginStatus // ignore: cast_nullable_to_non_nullable
|
||||
as int,
|
||||
nickname: freezed == nickname
|
||||
? _value.nickname
|
||||
: nickname // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
avatarUrl: freezed == avatarUrl
|
||||
? _value.avatarUrl
|
||||
: avatarUrl // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
authToken: freezed == authToken
|
||||
? _value.authToken
|
||||
: authToken // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
webToken: freezed == webToken
|
||||
? _value.webToken
|
||||
: webToken // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
releaseInfo: freezed == releaseInfo
|
||||
? _value._releaseInfo
|
||||
: releaseInfo // ignore: cast_nullable_to_non_nullable
|
||||
as Map<dynamic, dynamic>?,
|
||||
libraryData: freezed == libraryData
|
||||
? _value.libraryData
|
||||
: libraryData // ignore: cast_nullable_to_non_nullable
|
||||
as RsiGameLibraryData?,
|
||||
installPath: freezed == installPath
|
||||
? _value.installPath
|
||||
: installPath // ignore: cast_nullable_to_non_nullable
|
||||
as String?,
|
||||
isDeviceSupportWinHello: freezed == isDeviceSupportWinHello
|
||||
? _value.isDeviceSupportWinHello
|
||||
: isDeviceSupportWinHello // ignore: cast_nullable_to_non_nullable
|
||||
as bool?,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/// @nodoc
|
||||
|
||||
class _$LoginStatusImpl implements _LoginStatus {
|
||||
_$LoginStatusImpl(
|
||||
{required this.loginStatus,
|
||||
this.nickname,
|
||||
this.avatarUrl,
|
||||
this.authToken,
|
||||
this.webToken,
|
||||
final Map<dynamic, dynamic>? releaseInfo,
|
||||
this.libraryData,
|
||||
this.installPath,
|
||||
this.isDeviceSupportWinHello})
|
||||
: _releaseInfo = releaseInfo;
|
||||
|
||||
@override
|
||||
final int loginStatus;
|
||||
@override
|
||||
final String? nickname;
|
||||
@override
|
||||
final String? avatarUrl;
|
||||
@override
|
||||
final String? authToken;
|
||||
@override
|
||||
final String? webToken;
|
||||
final Map<dynamic, dynamic>? _releaseInfo;
|
||||
@override
|
||||
Map<dynamic, dynamic>? get releaseInfo {
|
||||
final value = _releaseInfo;
|
||||
if (value == null) return null;
|
||||
if (_releaseInfo is EqualUnmodifiableMapView) return _releaseInfo;
|
||||
// ignore: implicit_dynamic_type
|
||||
return EqualUnmodifiableMapView(value);
|
||||
}
|
||||
|
||||
@override
|
||||
final RsiGameLibraryData? libraryData;
|
||||
@override
|
||||
final String? installPath;
|
||||
@override
|
||||
final bool? isDeviceSupportWinHello;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'HomeGameLoginState(loginStatus: $loginStatus, nickname: $nickname, avatarUrl: $avatarUrl, authToken: $authToken, webToken: $webToken, releaseInfo: $releaseInfo, libraryData: $libraryData, installPath: $installPath, isDeviceSupportWinHello: $isDeviceSupportWinHello)';
|
||||
}
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
return identical(this, other) ||
|
||||
(other.runtimeType == runtimeType &&
|
||||
other is _$LoginStatusImpl &&
|
||||
(identical(other.loginStatus, loginStatus) ||
|
||||
other.loginStatus == loginStatus) &&
|
||||
(identical(other.nickname, nickname) ||
|
||||
other.nickname == nickname) &&
|
||||
(identical(other.avatarUrl, avatarUrl) ||
|
||||
other.avatarUrl == avatarUrl) &&
|
||||
(identical(other.authToken, authToken) ||
|
||||
other.authToken == authToken) &&
|
||||
(identical(other.webToken, webToken) ||
|
||||
other.webToken == webToken) &&
|
||||
const DeepCollectionEquality()
|
||||
.equals(other._releaseInfo, _releaseInfo) &&
|
||||
(identical(other.libraryData, libraryData) ||
|
||||
other.libraryData == libraryData) &&
|
||||
(identical(other.installPath, installPath) ||
|
||||
other.installPath == installPath) &&
|
||||
(identical(
|
||||
other.isDeviceSupportWinHello, isDeviceSupportWinHello) ||
|
||||
other.isDeviceSupportWinHello == isDeviceSupportWinHello));
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => Object.hash(
|
||||
runtimeType,
|
||||
loginStatus,
|
||||
nickname,
|
||||
avatarUrl,
|
||||
authToken,
|
||||
webToken,
|
||||
const DeepCollectionEquality().hash(_releaseInfo),
|
||||
libraryData,
|
||||
installPath,
|
||||
isDeviceSupportWinHello);
|
||||
|
||||
/// Create a copy of HomeGameLoginState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
@override
|
||||
@pragma('vm:prefer-inline')
|
||||
_$$LoginStatusImplCopyWith<_$LoginStatusImpl> get copyWith =>
|
||||
__$$LoginStatusImplCopyWithImpl<_$LoginStatusImpl>(this, _$identity);
|
||||
}
|
||||
|
||||
abstract class _LoginStatus implements HomeGameLoginState {
|
||||
factory _LoginStatus(
|
||||
{required final int loginStatus,
|
||||
final String? nickname,
|
||||
final String? avatarUrl,
|
||||
final String? authToken,
|
||||
final String? webToken,
|
||||
final Map<dynamic, dynamic>? releaseInfo,
|
||||
final RsiGameLibraryData? libraryData,
|
||||
final String? installPath,
|
||||
final bool? isDeviceSupportWinHello}) = _$LoginStatusImpl;
|
||||
|
||||
@override
|
||||
int get loginStatus;
|
||||
@override
|
||||
String? get nickname;
|
||||
@override
|
||||
String? get avatarUrl;
|
||||
@override
|
||||
String? get authToken;
|
||||
@override
|
||||
String? get webToken;
|
||||
@override
|
||||
Map<dynamic, dynamic>? get releaseInfo;
|
||||
@override
|
||||
RsiGameLibraryData? get libraryData;
|
||||
@override
|
||||
String? get installPath;
|
||||
@override
|
||||
bool? get isDeviceSupportWinHello;
|
||||
|
||||
/// Create a copy of HomeGameLoginState
|
||||
/// with the given fields replaced by the non-null parameter values.
|
||||
@override
|
||||
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||
_$$LoginStatusImplCopyWith<_$LoginStatusImpl> get copyWith =>
|
||||
throw _privateConstructorUsedError;
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'home_game_login_dialog_ui_model.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$homeGameLoginUIModelHash() =>
|
||||
r'e8afccb7bba7c79e766e30a27f64128918a63dd7';
|
||||
|
||||
/// See also [HomeGameLoginUIModel].
|
||||
@ProviderFor(HomeGameLoginUIModel)
|
||||
final homeGameLoginUIModelProvider = AutoDisposeNotifierProvider<
|
||||
HomeGameLoginUIModel, HomeGameLoginState>.internal(
|
||||
HomeGameLoginUIModel.new,
|
||||
name: r'homeGameLoginUIModelProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$homeGameLoginUIModelHash,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: null,
|
||||
);
|
||||
|
||||
typedef _$HomeGameLoginUIModel = AutoDisposeNotifier<HomeGameLoginState>;
|
||||
// ignore_for_file: type=lint
|
||||
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
|
Reference in New Issue
Block a user