70 lines
1.1 KiB
Dart
70 lines
1.1 KiB
Dart
enum RemoteCommandType {
|
|
dpadUp,
|
|
dpadDown,
|
|
dpadLeft,
|
|
dpadRight,
|
|
select,
|
|
back,
|
|
contextMenu,
|
|
|
|
play,
|
|
pause,
|
|
playPause,
|
|
stop,
|
|
seekForward,
|
|
seekBackward,
|
|
nextTrack,
|
|
previousTrack,
|
|
skipIntro,
|
|
skipCredits,
|
|
|
|
volumeUp,
|
|
volumeDown,
|
|
volumeMute,
|
|
volumeSet,
|
|
|
|
tabNext,
|
|
tabPrevious,
|
|
tabDiscover,
|
|
tabLibraries,
|
|
tabSearch,
|
|
tabDownloads,
|
|
tabSettings,
|
|
|
|
home,
|
|
search,
|
|
subtitles,
|
|
audioTracks,
|
|
qualitySettings,
|
|
fullscreen,
|
|
|
|
ping,
|
|
pong,
|
|
deviceInfo,
|
|
disconnect,
|
|
ack,
|
|
syncState,
|
|
}
|
|
|
|
class RemoteCommand {
|
|
final RemoteCommandType type;
|
|
final Map<String, dynamic>? data;
|
|
|
|
const RemoteCommand({required this.type, this.data});
|
|
|
|
factory RemoteCommand.fromJson(Map<String, dynamic> json) {
|
|
final index = json['t'] as int;
|
|
return RemoteCommand(
|
|
type: index < RemoteCommandType.values.length ? RemoteCommandType.values[index] : RemoteCommandType.ping,
|
|
data: json['d'] as Map<String, dynamic>?,
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {'t': type.index, if (data != null) 'd': data};
|
|
}
|
|
|
|
@override
|
|
String toString() => 'RemoteCommand(${type.name}, data: $data)';
|
|
}
|