fix(tautulli): cached or downloaded activity sessions could not be opened

This commit is contained in:
Jagandeep Brar
2022-12-16 16:56:55 -05:00
parent edb645f887
commit 4c99ecf927
8 changed files with 41 additions and 34 deletions

View File

@@ -172,7 +172,7 @@ class TautulliAPIHelper {
.api!
.activity
.terminateSession(
sessionId: session.sessionId,
sessionKey: session.sessionKey,
message: terminationMessage,
)
.then((_) {

View File

@@ -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,
},
);
}

View File

@@ -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(),
});
}
}

View File

@@ -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();

View File

@@ -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,

View File

@@ -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,

View File

@@ -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: [

View File

@@ -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: