Focus chrome was implemented twice, once in the focusable wrapper and once in the focus builders; both now go through FocusChrome. TvColorPicker's channel row was a copy of TvNumberSpinner and is now that widget in compact density. Also trims unused helpers and fields and simplifies the Jellyfin browse paths.
14 lines
667 B
Dart
14 lines
667 B
Dart
/// INVARIANT (#1488): a successful token mint must never be lost to parsing
|
|
/// of decorative fields. `authToken` is the only field any caller consumes
|
|
/// (see plex_home_switch.dart), so nothing else on the `/switch` body is
|
|
/// read. Plex has changed field shapes on this endpoint before (July 2026:
|
|
/// profile language lists became CSV strings), and each drift used to brick
|
|
/// token minting outright.
|
|
String parsePlexSwitchAuthToken(Map<String, dynamic> json) {
|
|
final authToken = json['authToken'];
|
|
if (authToken is! String || authToken.isEmpty) {
|
|
throw const FormatException('Plex /switch response has no usable authToken');
|
|
}
|
|
return authToken;
|
|
}
|