Skip to content

Commit

Permalink
fix(tautulli): cached or downloaded activity sessions could not be op…
Browse files Browse the repository at this point in the history
…ened
  • Loading branch information
JagandeepBrar committed Dec 16, 2022
1 parent edb645f commit 4c99ecf
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 34 deletions.
2 changes: 1 addition & 1 deletion lib/modules/tautulli/core/api_helper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ class TautulliAPIHelper {
.api!
.activity
.terminateSession(
sessionId: session.sessionId,
sessionKey: session.sessionKey,
message: terminationMessage,
)
.then((_) {
Expand Down
32 changes: 16 additions & 16 deletions lib/modules/tautulli/core/webhooks.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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,
},
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
});
}
}
19 changes: 13 additions & 6 deletions lib/modules/tautulli/routes/activity_details/route.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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),
);
}

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

Expand All @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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: [
Expand Down
2 changes: 1 addition & 1 deletion lib/router/routes/tautulli.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 4c99ecf

Please sign in to comment.