SpotifyException.fromPlatformException constructor
SpotifyException.fromPlatformException()
Factory mapping a PlatformException by its code and message into the appropriate domain exception subtype.
Implementation
factory SpotifyException.fromPlatformException(PlatformException e) {
final codeLower = e.code.toLowerCase();
final msg = (e.message != null && e.message!.isNotEmpty)
? e.message!
: e.code;
if (codeLower.contains('notinstalled') ||
codeLower.contains('not_installed') ||
codeLower.contains('spotifynotinstalled')) {
return SpotifyNotInstalledException(
msg,
code: e.code,
details: e.details,
cause: e,
);
}
if (codeLower.contains('auth') || codeLower.contains('token')) {
return SpotifyAuthenticationException(
msg,
code: e.code,
details: e.details,
cause: e,
);
}
if (codeLower.contains('connecting') ||
codeLower.contains('connection') ||
codeLower.contains('appremotenull') ||
codeLower.contains('pendingoperation') ||
codeLower.contains('not ready')) {
return SpotifyConnectionException(
msg,
code: e.code,
details: e.details,
cause: e,
);
}
if (codeLower.contains('library') || codeLower.contains('capabilities')) {
return SpotifyLibraryException(
msg,
code: e.code,
details: e.details,
cause: e,
);
}
if (codeLower.contains('image')) {
return SpotifyImageException(
msg,
code: e.code,
details: e.details,
cause: e,
);
}
if (codeLower.contains('play') ||
codeLower.contains('pause') ||
codeLower.contains('resume') ||
codeLower.contains('skip') ||
codeLower.contains('seek') ||
codeLower.contains('shuffle') ||
codeLower.contains('repeat') ||
codeLower.contains('queue')) {
return SpotifyPlaybackException(
msg,
code: e.code,
details: e.details,
cause: e,
);
}
if (codeLower.contains('unimplemented')) {
return SpotifyUnimplementedException(
msg,
code: e.code,
details: e.details,
cause: e,
);
}
return SpotifyGeneralException(
msg,
code: e.code,
details: e.details,
cause: e,
);
}