mirror of
https://github.com/jagandeepbrar/lunasea.git
synced 2026-08-30 20:24:25 +00:00
fix(tautulli): cached or downloaded activity sessions could not be opened
This commit is contained in:
@@ -172,7 +172,7 @@ class TautulliAPIHelper {
|
||||
.api!
|
||||
.activity
|
||||
.terminateSession(
|
||||
sessionId: session.sessionId,
|
||||
sessionKey: session.sessionKey,
|
||||
message: terminationMessage,
|
||||
)
|
||||
.then((_) {
|
||||
|
||||
@@ -120,26 +120,26 @@ extension _EventTypeExtension on _EventType {
|
||||
}
|
||||
|
||||
Future<void> _bufferWarning(Map data) async =>
|
||||
_goToActivityDetails(data['session_id']);
|
||||
_goToActivityDetails(data['session_key']);
|
||||
Future<void> _playbackErrorEvent(Map data) async =>
|
||||
_goToUserDetails(int.tryParse(data['user_id']));
|
||||
_goToUserDetails(data['user_id']);
|
||||
Future<void> _playbackPauseEvent(Map data) async =>
|
||||
_goToActivityDetails(data['session_id']);
|
||||
_goToActivityDetails(data['session_key']);
|
||||
Future<void> _playbackResumeEvent(Map data) async =>
|
||||
_goToActivityDetails(data['session_id']);
|
||||
_goToActivityDetails(data['session_key']);
|
||||
Future<void> _playbackStartEvent(Map data) async =>
|
||||
_goToActivityDetails(data['session_id']);
|
||||
_goToActivityDetails(data['session_key']);
|
||||
Future<void> _playbackStopEvent(Map data) async =>
|
||||
_goToUserDetails(int.tryParse(data['user_id']));
|
||||
_goToUserDetails(data['user_id']);
|
||||
|
||||
Future<void> _transcodeDecisionChangeEvent(Map data) async =>
|
||||
_goToActivityDetails(data['session_id']);
|
||||
_goToActivityDetails(data['session_key']);
|
||||
Future<void> _userConcurrentStreams(Map data) async =>
|
||||
_goToUserDetails(int.tryParse(data['user_id']));
|
||||
_goToUserDetails(data['user_id']);
|
||||
Future<void> _userNewDevice(Map data) async =>
|
||||
_goToUserDetails(int.tryParse(data['user_id']));
|
||||
_goToUserDetails(data['user_id']);
|
||||
Future<void> _watchedEvent(Map data) async =>
|
||||
_goToUserDetails(int.tryParse(data['user_id']));
|
||||
_goToUserDetails(data['user_id']);
|
||||
|
||||
Future<void> _plexRemoteAccessBackUp(Map data) async {
|
||||
TautulliRoutes.LOGS.go(buildTree: true);
|
||||
@@ -177,24 +177,24 @@ extension _EventTypeExtension on _EventType {
|
||||
return LunaModule.TAUTULLI.launch();
|
||||
}
|
||||
|
||||
Future<void> _goToUserDetails(int? userId) async {
|
||||
if (userId != null) {
|
||||
Future<void> _goToUserDetails(String? userId) async {
|
||||
if (userId != null && userId.isNotEmpty) {
|
||||
return TautulliRoutes.USER_DETAILS.go(
|
||||
buildTree: true,
|
||||
params: {
|
||||
'user': userId.toString(),
|
||||
'user': userId,
|
||||
},
|
||||
);
|
||||
}
|
||||
return _goToHome();
|
||||
}
|
||||
|
||||
Future<void> _goToActivityDetails(String? sessionId) async {
|
||||
if (sessionId != null && sessionId.isNotEmpty) {
|
||||
Future<void> _goToActivityDetails(String? sessionKey) async {
|
||||
if (sessionKey != null && sessionKey.isNotEmpty) {
|
||||
return TautulliRoutes.ACTIVITY_DETAILS.go(
|
||||
buildTree: true,
|
||||
params: {
|
||||
'session': sessionId.toString(),
|
||||
'session': sessionKey,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ class TautulliActivityTile extends StatelessWidget {
|
||||
|
||||
Future<void> _enterDetails(BuildContext context) async {
|
||||
TautulliRoutes.ACTIVITY_DETAILS.go(params: {
|
||||
'session': session.sessionId!.toString(),
|
||||
'session': session.sessionKey.toString(),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,11 @@ import 'package:lunasea/core.dart';
|
||||
import 'package:lunasea/modules/tautulli.dart';
|
||||
|
||||
class ActivityDetailsRoute extends StatefulWidget {
|
||||
final String? sessionId;
|
||||
final int sessionKey;
|
||||
|
||||
const ActivityDetailsRoute({
|
||||
Key? key,
|
||||
required this.sessionId,
|
||||
required this.sessionKey,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -28,12 +28,19 @@ class _State extends State<ActivityDetailsRoute>
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (widget.sessionKey == -1) {
|
||||
return LunaMessage.goBack(
|
||||
context: context,
|
||||
text: 'tautulli.SessionEnded'.tr(),
|
||||
);
|
||||
}
|
||||
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
appBar: _appBar() as PreferredSizeWidget?,
|
||||
body: _body(),
|
||||
bottomNavigationBar:
|
||||
TautulliActivityDetailsBottomActionBar(sessionId: widget.sessionId),
|
||||
TautulliActivityDetailsBottomActionBar(sessionKey: widget.sessionKey),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -44,8 +51,8 @@ class _State extends State<ActivityDetailsRoute>
|
||||
scrollController
|
||||
],
|
||||
actions: [
|
||||
TautulliActivityDetailsUserAction(sessionId: widget.sessionId),
|
||||
TautulliActivityDetailsMetadataAction(sessionId: widget.sessionId),
|
||||
TautulliActivityDetailsUserAction(sessionKey: widget.sessionKey),
|
||||
TautulliActivityDetailsMetadataAction(sessionKey: widget.sessionKey),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -70,7 +77,7 @@ class _State extends State<ActivityDetailsRoute>
|
||||
if (snapshot.hasData) {
|
||||
TautulliSession? session = snapshot.data!.sessions!
|
||||
.firstWhereOrNull(
|
||||
(element) => element.sessionId == widget.sessionId);
|
||||
(element) => element.sessionKey == widget.sessionKey);
|
||||
return _session(session);
|
||||
}
|
||||
return const LunaLoader();
|
||||
|
||||
@@ -5,11 +5,11 @@ import 'package:lunasea/modules/tautulli.dart';
|
||||
import 'package:lunasea/router/routes/tautulli.dart';
|
||||
|
||||
class TautulliActivityDetailsMetadataAction extends StatelessWidget {
|
||||
final String? sessionId;
|
||||
final int sessionKey;
|
||||
|
||||
const TautulliActivityDetailsMetadataAction({
|
||||
Key? key,
|
||||
required this.sessionId,
|
||||
required this.sessionKey,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -21,7 +21,7 @@ class TautulliActivityDetailsMetadataAction extends StatelessWidget {
|
||||
if (snapshot.hasError) return Container();
|
||||
if (snapshot.hasData) {
|
||||
TautulliSession? session = snapshot.data!.sessions!
|
||||
.firstWhereOrNull((element) => element.sessionId == sessionId);
|
||||
.firstWhereOrNull((element) => element.sessionKey == sessionKey);
|
||||
if (session != null)
|
||||
return LunaIconButton(
|
||||
icon: Icons.info_outline_rounded,
|
||||
|
||||
@@ -5,11 +5,11 @@ import 'package:lunasea/modules/tautulli.dart';
|
||||
import 'package:lunasea/router/routes/tautulli.dart';
|
||||
|
||||
class TautulliActivityDetailsUserAction extends StatelessWidget {
|
||||
final String? sessionId;
|
||||
final int sessionKey;
|
||||
|
||||
const TautulliActivityDetailsUserAction({
|
||||
Key? key,
|
||||
required this.sessionId,
|
||||
required this.sessionKey,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -21,7 +21,7 @@ class TautulliActivityDetailsUserAction extends StatelessWidget {
|
||||
if (snapshot.hasError) return Container();
|
||||
if (snapshot.hasData) {
|
||||
TautulliSession? session = snapshot.data!.sessions!
|
||||
.firstWhereOrNull((element) => element.sessionId == sessionId);
|
||||
.firstWhereOrNull((element) => element.sessionKey == sessionKey);
|
||||
if (session != null)
|
||||
return LunaIconButton(
|
||||
icon: Icons.person_rounded,
|
||||
|
||||
@@ -4,11 +4,11 @@ import 'package:lunasea/core.dart';
|
||||
import 'package:lunasea/modules/tautulli.dart';
|
||||
|
||||
class TautulliActivityDetailsBottomActionBar extends StatelessWidget {
|
||||
final String? sessionId;
|
||||
final int sessionKey;
|
||||
|
||||
const TautulliActivityDetailsBottomActionBar({
|
||||
Key? key,
|
||||
required this.sessionId,
|
||||
required this.sessionKey,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
@@ -19,7 +19,7 @@ class TautulliActivityDetailsBottomActionBar extends StatelessWidget {
|
||||
if (snapshot.hasError) return Container(height: 0.0);
|
||||
if (snapshot.hasData) {
|
||||
TautulliSession? session = snapshot.data!.sessions!
|
||||
.firstWhereOrNull((element) => element.sessionId == sessionId);
|
||||
.firstWhereOrNull((element) => element.sessionKey == sessionKey);
|
||||
if (session != null)
|
||||
return LunaBottomActionBar(
|
||||
actions: [
|
||||
|
||||
@@ -70,7 +70,7 @@ enum TautulliRoutes with LunaRoutesMixin {
|
||||
case TautulliRoutes.ACTIVITY_DETAILS:
|
||||
return route(builder: (_, state) {
|
||||
return ActivityDetailsRoute(
|
||||
sessionId: state.params['session'],
|
||||
sessionKey: int.tryParse(state.params['session'] ?? '') ?? -1,
|
||||
);
|
||||
});
|
||||
case TautulliRoutes.CHECK_FOR_UPDATES:
|
||||
|
||||
Reference in New Issue
Block a user