mirror of
https://github.com/simon-ding/polaris.git
synced 2026-03-04 00:20:47 +08:00
110 lines
2.9 KiB
Dart
110 lines
2.9 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:ui/providers/APIs.dart';
|
|
import 'package:ui/providers/server_response.dart';
|
|
|
|
var mediaSizeLimiterDataProvider =
|
|
AsyncNotifierProvider.autoDispose<MediaSizeLimiterData, MediaSizeLimiter>(
|
|
MediaSizeLimiterData.new);
|
|
|
|
class MediaSizeLimiterData extends AutoDisposeAsyncNotifier<MediaSizeLimiter> {
|
|
@override
|
|
FutureOr<MediaSizeLimiter> build() async {
|
|
final dio = APIs.getDio();
|
|
var resp = await dio.get(APIs.mediaSizeLimiterUrl);
|
|
var sp = ServerResponse.fromJson(resp.data);
|
|
if (sp.code != 0) {
|
|
throw sp.message;
|
|
}
|
|
return MediaSizeLimiter.fromJson(sp.data);
|
|
}
|
|
|
|
Future<void> submit(MediaSizeLimiter limiter) async {
|
|
final dio = APIs.getDio();
|
|
var resp = await dio.post(APIs.mediaSizeLimiterUrl, data: limiter.toJson());
|
|
var sp = ServerResponse.fromJson(resp.data);
|
|
if (sp.code != 0) {
|
|
throw sp.message;
|
|
}
|
|
ref.invalidateSelf();
|
|
}
|
|
}
|
|
|
|
class MediaSizeLimiter {
|
|
SizeLimiter? tvLimiter;
|
|
SizeLimiter? movieLimiter;
|
|
|
|
MediaSizeLimiter({this.tvLimiter, this.movieLimiter});
|
|
|
|
MediaSizeLimiter.fromJson(Map<String, dynamic> json) {
|
|
tvLimiter = json['tv_limiter'] != null
|
|
? SizeLimiter.fromJson(json['tv_limiter'])
|
|
: null;
|
|
movieLimiter = json['movie_limiter'] != null
|
|
? SizeLimiter.fromJson(json['movie_limiter'])
|
|
: null;
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final Map<String, dynamic> data = <String, dynamic>{};
|
|
if (tvLimiter != null) {
|
|
data['tv_limiter'] = tvLimiter!.toJson();
|
|
}
|
|
if (movieLimiter != null) {
|
|
data['movie_limiter'] = movieLimiter!.toJson();
|
|
}
|
|
return data;
|
|
}
|
|
}
|
|
|
|
class SizeLimiter {
|
|
ResLimiter? p720p;
|
|
ResLimiter? p1080p;
|
|
ResLimiter? p2160p;
|
|
|
|
SizeLimiter({this.p720p, this.p1080p, this.p2160p});
|
|
|
|
SizeLimiter.fromJson(Map<String, dynamic> json) {
|
|
p720p = json['720p'] != null ? ResLimiter.fromJson(json['720p']) : null;
|
|
p1080p = json['1080p'] != null ? ResLimiter.fromJson(json['1080p']) : null;
|
|
p2160p = json['2160p'] != null ? ResLimiter.fromJson(json['2160p']) : null;
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final Map<String, dynamic> data = <String, dynamic>{};
|
|
if (p720p != null) {
|
|
data['720p'] = p720p!.toJson();
|
|
}
|
|
if (p1080p != null) {
|
|
data['1080p'] = p1080p!.toJson();
|
|
}
|
|
if (p2160p != null) {
|
|
data['2160p'] = p2160p!.toJson();
|
|
}
|
|
return data;
|
|
}
|
|
}
|
|
|
|
class ResLimiter {
|
|
int? maxSize;
|
|
int? minSize;
|
|
int? preferSize;
|
|
|
|
ResLimiter({this.maxSize, this.minSize, this.preferSize});
|
|
|
|
ResLimiter.fromJson(Map<String, dynamic> json) {
|
|
maxSize = json['max_size'];
|
|
minSize = json['min_size'];
|
|
preferSize = json['prefer_size'];
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
final Map<String, dynamic> data = <String, dynamic>{};
|
|
data['max_size'] = maxSize;
|
|
data['min_size'] = minSize;
|
|
data['prefer_size'] = preferSize;
|
|
return data;
|
|
}
|
|
}
|