mirror of
https://github.com/K3vinb5/Unyo.git
synced 2026-06-13 13:49:43 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -72,9 +72,11 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
|
||||
void setDiscordRPC() async{
|
||||
final bool discordEnabled = prefs.getBool("discord_rpc") ?? false;
|
||||
if (discordEnabled) {
|
||||
await discord.initDiscordRPC();
|
||||
if (!discordEnabled) {
|
||||
await discord.cleanup();
|
||||
return;
|
||||
}
|
||||
await discord.initDiscordRPC(autoRetry: discordEnabled);
|
||||
}
|
||||
|
||||
void goToLogin() {
|
||||
|
||||
@@ -70,11 +70,10 @@ class _MangaDetailsScreenState extends State<MangaDetailsScreen> {
|
||||
}
|
||||
|
||||
int getSavedSource() {
|
||||
final List<String> sourcesNames = mangaSources.values.map((a) =>
|
||||
a.getSourceName()).toList();
|
||||
final List<String> sourcesNames = mangaSources.values.map((a) => a.getSourceName()).toList();
|
||||
final String? savedSource = prefs.getString(_defaultMangaSourceKey);
|
||||
if (savedSource != null && sourcesNames.contains(savedSource)) {
|
||||
logger.i("Found saved previously saved source: $savedSource");
|
||||
logger.i("Found previously saved source: $savedSource");
|
||||
return sourcesNames.indexOf(savedSource);
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -128,7 +128,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
prefs.setBool("discord_rpc", newValue);
|
||||
});
|
||||
if (newValue) {
|
||||
await discord.initDiscordRPC();
|
||||
await discord.initDiscordRPC(autoRetry: true);
|
||||
} else {
|
||||
await discord.cleanup();
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'dart:async';
|
||||
import 'package:flutter_discord_rpc/flutter_discord_rpc.dart';
|
||||
import 'package:unyo/models/models.dart';
|
||||
import 'package:unyo/util/utils.dart';
|
||||
@@ -7,9 +8,10 @@ class DiscordRPC {
|
||||
bool _initialized = false;
|
||||
DateTime initTime = DateTime.now();
|
||||
bool discordConnected = false;
|
||||
StreamSubscription<bool>? _connSub;
|
||||
|
||||
/// Initialize Discord RPC once
|
||||
Future<void> initDiscordRPC() async {
|
||||
Future<void> initDiscordRPC({bool autoRetry = false}) async {
|
||||
try {
|
||||
// only call initialize() once per process
|
||||
if (!_initialized) {
|
||||
@@ -24,7 +26,7 @@ class DiscordRPC {
|
||||
}
|
||||
|
||||
// otherwise, connect and then set the initial activity
|
||||
await FlutterDiscordRPC.instance.connect(autoRetry: true);
|
||||
await FlutterDiscordRPC.instance.connect(autoRetry: autoRetry);
|
||||
discordConnected = FlutterDiscordRPC.instance.isConnected;
|
||||
|
||||
logger.i('Discord RPC connected: $discordConnected');
|
||||
@@ -36,19 +38,19 @@ class DiscordRPC {
|
||||
}
|
||||
|
||||
// listen for reconnects (e.g. if the user restarts Discord)
|
||||
FlutterDiscordRPC.instance.isConnectedStream.listen((connected) {
|
||||
discordConnected = connected;
|
||||
logger.i('Discord RPC connection status: $connected');
|
||||
if (connected) {
|
||||
setPageActivity('Home Screen');
|
||||
}
|
||||
});
|
||||
_connSub = FlutterDiscordRPC.instance.isConnectedStream.listen((connected) {
|
||||
discordConnected = connected;
|
||||
logger.i('Discord RPC connection status: $connected');
|
||||
if (connected) setPageActivity('Home Screen');
|
||||
});
|
||||
} catch (e) {
|
||||
logger.e('Discord RPC initialization failed: $e');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> cleanup() async {
|
||||
await _connSub?.cancel();
|
||||
_connSub = null;
|
||||
if (!discordConnected) return;
|
||||
try {
|
||||
await FlutterDiscordRPC.instance.clearActivity();
|
||||
@@ -73,6 +75,16 @@ class DiscordRPC {
|
||||
start: initTime.millisecondsSinceEpoch,
|
||||
end: null,
|
||||
),
|
||||
buttons: [
|
||||
const RPCButton(
|
||||
label: "GitHub Repository",
|
||||
url: "https://github.com/K3vinb5/Unyo",
|
||||
),
|
||||
const RPCButton(
|
||||
label: "Download App",
|
||||
url: "https://github.com/K3vinb5/Unyo/releases",
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -93,6 +105,16 @@ class DiscordRPC {
|
||||
start: initTime.millisecondsSinceEpoch,
|
||||
end: null,
|
||||
),
|
||||
buttons: [
|
||||
const RPCButton(
|
||||
label: "GitHub Repository",
|
||||
url: "https://github.com/K3vinb5/Unyo",
|
||||
),
|
||||
const RPCButton(
|
||||
label: "Download App",
|
||||
url: "https://github.com/K3vinb5/Unyo/releases",
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -113,6 +135,16 @@ class DiscordRPC {
|
||||
start: initTime.millisecondsSinceEpoch,
|
||||
end: null,
|
||||
),
|
||||
buttons: [
|
||||
const RPCButton(
|
||||
label: "GitHub Repository",
|
||||
url: "https://github.com/K3vinb5/Unyo",
|
||||
),
|
||||
const RPCButton(
|
||||
label: "Download App",
|
||||
url: "https://github.com/K3vinb5/Unyo/releases",
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -143,6 +175,16 @@ class DiscordRPC {
|
||||
start: initTime.millisecondsSinceEpoch,
|
||||
end: null,
|
||||
),
|
||||
buttons: [
|
||||
const RPCButton(
|
||||
label: "GitHub Repository",
|
||||
url: "https://github.com/K3vinb5/Unyo",
|
||||
),
|
||||
const RPCButton(
|
||||
label: "Download App",
|
||||
url: "https://github.com/K3vinb5/Unyo/releases",
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -163,6 +205,16 @@ class DiscordRPC {
|
||||
start: initTime.millisecondsSinceEpoch,
|
||||
end: null,
|
||||
),
|
||||
buttons: [
|
||||
const RPCButton(
|
||||
label: "GitHub Repository",
|
||||
url: "https://github.com/K3vinb5/Unyo",
|
||||
),
|
||||
const RPCButton(
|
||||
label: "Download App",
|
||||
url: "https://github.com/K3vinb5/Unyo/releases",
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user