[mob][photos] Show custom error on ip mismatch

This commit is contained in:
Neeraj Gupta 2024-04-29 16:56:53 +05:30
parent 7c9160478d
commit 5c645d50f0
5 changed files with 48 additions and 6 deletions

View file

@ -12,10 +12,14 @@ class CastGateway {
); );
return response.data["publicKey"]; return response.data["publicKey"];
} catch (e) { } catch (e) {
if (e is DioError && if (e is DioError && e.response != null) {
e.response != null && if (e.response!.statusCode == 404) {
e.response!.statusCode == 404) { return null;
return null; } else if (e.response!.statusCode == 403) {
throw CastIPMismatchException();
} else {
rethrow;
}
} }
rethrow; rethrow;
} }
@ -48,3 +52,7 @@ class CastGateway {
} }
} }
} }
class CastIPMismatchException implements Exception {
CastIPMismatchException();
}

View file

@ -394,6 +394,10 @@ class MessageLookup extends MessageLookupByLibrary {
"cannotAddMorePhotosAfterBecomingViewer": m9, "cannotAddMorePhotosAfterBecomingViewer": m9,
"cannotDeleteSharedFiles": "cannotDeleteSharedFiles":
MessageLookupByLibrary.simpleMessage("Cannot delete shared files"), MessageLookupByLibrary.simpleMessage("Cannot delete shared files"),
"castIPMismatchBody": MessageLookupByLibrary.simpleMessage(
"Please make sure you are on the same network as the TV."),
"castIPMismatchTitle":
MessageLookupByLibrary.simpleMessage("Failed to cast album"),
"castInstruction": MessageLookupByLibrary.simpleMessage( "castInstruction": MessageLookupByLibrary.simpleMessage(
"Visit cast.ente.io on the device you want to pair.\n\nEnter the code below to play the album on your TV."), "Visit cast.ente.io on the device you want to pair.\n\nEnter the code below to play the album on your TV."),
"centerPoint": MessageLookupByLibrary.simpleMessage("Center point"), "centerPoint": MessageLookupByLibrary.simpleMessage("Center point"),

View file

@ -8663,6 +8663,26 @@ class S {
args: [], args: [],
); );
} }
/// `Failed to cast album`
String get castIPMismatchTitle {
return Intl.message(
'Failed to cast album',
name: 'castIPMismatchTitle',
desc: '',
args: [],
);
}
/// `Please make sure you are on the same network as the TV.`
String get castIPMismatchBody {
return Intl.message(
'Please make sure you are on the same network as the TV.',
name: 'castIPMismatchBody',
desc: '',
args: [],
);
}
} }
class AppLocalizationDelegate extends LocalizationsDelegate<S> { class AppLocalizationDelegate extends LocalizationsDelegate<S> {

View file

@ -1222,5 +1222,7 @@
"autoCastiOSPermission": "Make sure Local Network permissions are turned on for the Ente Photos app, in Settings.", "autoCastiOSPermission": "Make sure Local Network permissions are turned on for the Ente Photos app, in Settings.",
"noDeviceFound": "No device found", "noDeviceFound": "No device found",
"stopCastingTitle": "Stop casting", "stopCastingTitle": "Stop casting",
"stopCastingBody": "Do you want to stop casting?" "stopCastingBody": "Do you want to stop casting?",
"castIPMismatchTitle": "Failed to cast album",
"castIPMismatchBody": "Please make sure you are on the same network as the TV."
} }

View file

@ -948,7 +948,15 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
return true; return true;
} catch (e, s) { } catch (e, s) {
_logger.severe("Failed to cast album", e, s); _logger.severe("Failed to cast album", e, s);
await showGenericErrorDialog(context: context, error: e); if (e is CastIPMismatchException) {
await showErrorDialog(
context,
S.of(context).castIPMismatchTitle,
S.of(context).castIPMismatchBody,
);
} else {
await showGenericErrorDialog(context: context, error: e);
}
return false; return false;
} }
} }