Reason Pun

todo 上传临境

......@@ -8,12 +8,12 @@ import 'package:Parlando/account/models/user_entity.dart';
import 'package:Parlando/category/models/category_item_entity.dart';
import 'package:Parlando/home/models/setting_entity.dart';
import 'package:Parlando/login/models/auth_entity.dart';
import 'package:Parlando/models/upload_entity.dart';
import 'package:Parlando/poem/models/lang_sort_entity.dart';
import 'package:Parlando/poem/models/search_entity.dart';
import 'package:Parlando/timeline/models/friend_entity.dart';
JsonConvert jsonConvert = JsonConvert();
typedef JsonConvertFunction<T> = T Function(Map<String, dynamic> json);
class JsonConvert {
......@@ -29,6 +29,9 @@ class JsonConvert {
(AuthEntity).toString(): AuthEntity.fromJson,
(AuthData).toString(): AuthData.fromJson,
(AuthError).toString(): AuthError.fromJson,
(UploadEntity).toString(): UploadEntity.fromJson,
(UploadData).toString(): UploadData.fromJson,
(UploadError).toString(): UploadError.fromJson,
(LangSortEntity).toString(): LangSortEntity.fromJson,
(SearchEntity).toString(): SearchEntity.fromJson,
(SearchItems).toString(): SearchItems.fromJson,
......@@ -111,115 +114,78 @@ class JsonConvert {
//list is returned by type
static M? _getListChildType<M>(List<Map<String, dynamic>> data) {
if (<UserEntity>[] is M) {
return data
.map<UserEntity>((Map<String, dynamic> e) => UserEntity.fromJson(e))
.toList() as M;
}
if (<UserData>[] is M) {
return data
.map<UserData>((Map<String, dynamic> e) => UserData.fromJson(e))
.toList() as M;
}
if (<UserError>[] is M) {
return data
.map<UserError>((Map<String, dynamic> e) => UserError.fromJson(e))
.toList() as M;
}
if (<CategoryItemEntity>[] is M) {
return data
.map<CategoryItemEntity>(
(Map<String, dynamic> e) => CategoryItemEntity.fromJson(e))
.toList() as M;
}
if (<SettingEntity>[] is M) {
return data
.map<SettingEntity>(
(Map<String, dynamic> e) => SettingEntity.fromJson(e))
.toList() as M;
}
if (<SettingData>[] is M) {
return data
.map<SettingData>((Map<String, dynamic> e) => SettingData.fromJson(e))
.toList() as M;
}
if (<SettingDataLoginSetting>[] is M) {
return data
.map<SettingDataLoginSetting>(
(Map<String, dynamic> e) => SettingDataLoginSetting.fromJson(e))
.toList() as M;
}
if (<SettingError>[] is M) {
return data
.map<SettingError>(
(Map<String, dynamic> e) => SettingError.fromJson(e))
.toList() as M;
}
if (<AuthEntity>[] is M) {
return data
.map<AuthEntity>((Map<String, dynamic> e) => AuthEntity.fromJson(e))
.toList() as M;
}
if (<AuthData>[] is M) {
return data
.map<AuthData>((Map<String, dynamic> e) => AuthData.fromJson(e))
.toList() as M;
}
if (<AuthError>[] is M) {
return data
.map<AuthError>((Map<String, dynamic> e) => AuthError.fromJson(e))
.toList() as M;
}
if (<LangSortEntity>[] is M) {
return data
.map<LangSortEntity>(
(Map<String, dynamic> e) => LangSortEntity.fromJson(e))
.toList() as M;
}
if (<SearchEntity>[] is M) {
return data
.map<SearchEntity>(
(Map<String, dynamic> e) => SearchEntity.fromJson(e))
.toList() as M;
}
if (<SearchItems>[] is M) {
return data
.map<SearchItems>((Map<String, dynamic> e) => SearchItems.fromJson(e))
.toList() as M;
}
if (<SearchItemsOwner>[] is M) {
return data
.map<SearchItemsOwner>(
(Map<String, dynamic> e) => SearchItemsOwner.fromJson(e))
.toList() as M;
}
if (<SearchItemsLicense>[] is M) {
return data
.map<SearchItemsLicense>(
(Map<String, dynamic> e) => SearchItemsLicense.fromJson(e))
.toList() as M;
}
if (<FriendEntity>[] is M) {
return data
.map<FriendEntity>(
(Map<String, dynamic> e) => FriendEntity.fromJson(e))
.toList() as M;
}
if (<FriendData>[] is M) {
return data
.map<FriendData>((Map<String, dynamic> e) => FriendData.fromJson(e))
.toList() as M;
if(<UserEntity>[] is M){
return data.map<UserEntity>((Map<String, dynamic> e) => UserEntity.fromJson(e)).toList() as M;
}
if(<UserData>[] is M){
return data.map<UserData>((Map<String, dynamic> e) => UserData.fromJson(e)).toList() as M;
}
if(<UserError>[] is M){
return data.map<UserError>((Map<String, dynamic> e) => UserError.fromJson(e)).toList() as M;
}
if(<CategoryItemEntity>[] is M){
return data.map<CategoryItemEntity>((Map<String, dynamic> e) => CategoryItemEntity.fromJson(e)).toList() as M;
}
if(<SettingEntity>[] is M){
return data.map<SettingEntity>((Map<String, dynamic> e) => SettingEntity.fromJson(e)).toList() as M;
}
if(<SettingData>[] is M){
return data.map<SettingData>((Map<String, dynamic> e) => SettingData.fromJson(e)).toList() as M;
}
if(<SettingDataLoginSetting>[] is M){
return data.map<SettingDataLoginSetting>((Map<String, dynamic> e) => SettingDataLoginSetting.fromJson(e)).toList() as M;
}
if(<SettingError>[] is M){
return data.map<SettingError>((Map<String, dynamic> e) => SettingError.fromJson(e)).toList() as M;
}
if(<AuthEntity>[] is M){
return data.map<AuthEntity>((Map<String, dynamic> e) => AuthEntity.fromJson(e)).toList() as M;
}
if(<AuthData>[] is M){
return data.map<AuthData>((Map<String, dynamic> e) => AuthData.fromJson(e)).toList() as M;
}
if(<AuthError>[] is M){
return data.map<AuthError>((Map<String, dynamic> e) => AuthError.fromJson(e)).toList() as M;
}
if(<UploadEntity>[] is M){
return data.map<UploadEntity>((Map<String, dynamic> e) => UploadEntity.fromJson(e)).toList() as M;
}
if(<UploadData>[] is M){
return data.map<UploadData>((Map<String, dynamic> e) => UploadData.fromJson(e)).toList() as M;
}
if(<UploadError>[] is M){
return data.map<UploadError>((Map<String, dynamic> e) => UploadError.fromJson(e)).toList() as M;
}
if(<LangSortEntity>[] is M){
return data.map<LangSortEntity>((Map<String, dynamic> e) => LangSortEntity.fromJson(e)).toList() as M;
}
if(<SearchEntity>[] is M){
return data.map<SearchEntity>((Map<String, dynamic> e) => SearchEntity.fromJson(e)).toList() as M;
}
if(<SearchItems>[] is M){
return data.map<SearchItems>((Map<String, dynamic> e) => SearchItems.fromJson(e)).toList() as M;
}
if(<SearchItemsOwner>[] is M){
return data.map<SearchItemsOwner>((Map<String, dynamic> e) => SearchItemsOwner.fromJson(e)).toList() as M;
}
if(<SearchItemsLicense>[] is M){
return data.map<SearchItemsLicense>((Map<String, dynamic> e) => SearchItemsLicense.fromJson(e)).toList() as M;
}
if(<FriendEntity>[] is M){
return data.map<FriendEntity>((Map<String, dynamic> e) => FriendEntity.fromJson(e)).toList() as M;
}
if(<FriendData>[] is M){
return data.map<FriendData>((Map<String, dynamic> e) => FriendData.fromJson(e)).toList() as M;
}
debugPrint("${M.toString()} not found");
return null;
}
}
static M? fromJsonAsT<M>(dynamic json) {
if (json is List) {
return _getListChildType<M>(
json.map((e) => e as Map<String, dynamic>).toList());
return _getListChildType<M>(json.map((e) => e as Map<String, dynamic>).toList());
} else {
return jsonConvert.asT<M>(json);
}
......
......@@ -3,8 +3,7 @@ import 'package:Parlando/timeline/models/friend_entity.dart';
FriendEntity $FriendEntityFromJson(Map<String, dynamic> json) {
final FriendEntity friendEntity = FriendEntity();
final List<FriendData>? data =
jsonConvert.convertListNotNull<FriendData>(json['data']);
final List<FriendData>? data = jsonConvert.convertListNotNull<FriendData>(json['data']);
if (data != null) {
friendEntity.data = data;
}
......
......@@ -7,13 +7,11 @@ SearchEntity $SearchEntityFromJson(Map<String, dynamic> json) {
if (totalCount != null) {
searchEntity.totalCount = totalCount;
}
final bool? incompleteResults =
jsonConvert.convert<bool>(json['incomplete_results']);
final bool? incompleteResults = jsonConvert.convert<bool>(json['incomplete_results']);
if (incompleteResults != null) {
searchEntity.incompleteResults = incompleteResults;
}
final List<SearchItems>? items =
jsonConvert.convertListNotNull<SearchItems>(json['items']);
final List<SearchItems>? items = jsonConvert.convertListNotNull<SearchItems>(json['items']);
if (items != null) {
searchEntity.items = items;
}
......
......@@ -38,8 +38,7 @@ Map<String, dynamic> $SettingEntityToJson(SettingEntity entity) {
SettingData $SettingDataFromJson(Map<String, dynamic> json) {
final SettingData settingData = SettingData();
final List<SettingDataLoginSetting>? loginSetting = jsonConvert
.convertListNotNull<SettingDataLoginSetting>(json['login_setting']);
final List<SettingDataLoginSetting>? loginSetting = jsonConvert.convertListNotNull<SettingDataLoginSetting>(json['login_setting']);
if (loginSetting != null) {
settingData.loginSetting = loginSetting;
}
......@@ -52,10 +51,8 @@ Map<String, dynamic> $SettingDataToJson(SettingData entity) {
return data;
}
SettingDataLoginSetting $SettingDataLoginSettingFromJson(
Map<String, dynamic> json) {
final SettingDataLoginSetting settingDataLoginSetting =
SettingDataLoginSetting();
SettingDataLoginSetting $SettingDataLoginSettingFromJson(Map<String, dynamic> json) {
final SettingDataLoginSetting settingDataLoginSetting = SettingDataLoginSetting();
final String? icon = jsonConvert.convert<String>(json['icon']);
if (icon != null) {
settingDataLoginSetting.icon = icon;
......@@ -71,8 +68,7 @@ SettingDataLoginSetting $SettingDataLoginSettingFromJson(
return settingDataLoginSetting;
}
Map<String, dynamic> $SettingDataLoginSettingToJson(
SettingDataLoginSetting entity) {
Map<String, dynamic> $SettingDataLoginSettingToJson(SettingDataLoginSetting entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['icon'] = entity.icon;
data['name'] = entity.name;
......
import 'package:Parlando/generated/json/base/json_convert_content.dart';
import 'package:Parlando/models/upload_entity.dart';
UploadEntity $UploadEntityFromJson(Map<String, dynamic> json) {
final UploadEntity uploadEntity = UploadEntity();
final String? status = jsonConvert.convert<String>(json['status']);
if (status != null) {
uploadEntity.status = status;
}
final int? code = jsonConvert.convert<int>(json['code']);
if (code != null) {
uploadEntity.code = code;
}
final String? message = jsonConvert.convert<String>(json['message']);
if (message != null) {
uploadEntity.message = message;
}
final UploadData? data = jsonConvert.convert<UploadData>(json['data']);
if (data != null) {
uploadEntity.data = data;
}
final UploadError? error = jsonConvert.convert<UploadError>(json['error']);
if (error != null) {
uploadEntity.error = error;
}
return uploadEntity;
}
Map<String, dynamic> $UploadEntityToJson(UploadEntity entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['status'] = entity.status;
data['code'] = entity.code;
data['message'] = entity.message;
data['data'] = entity.data?.toJson();
data['error'] = entity.error?.toJson();
return data;
}
UploadData $UploadDataFromJson(Map<String, dynamic> json) {
final UploadData uploadData = UploadData();
final String? relativePath = jsonConvert.convert<String>(json['relative_path']);
if (relativePath != null) {
uploadData.relativePath = relativePath;
}
final String? absolutePath = jsonConvert.convert<String>(json['absolute_path']);
if (absolutePath != null) {
uploadData.absolutePath = absolutePath;
}
return uploadData;
}
Map<String, dynamic> $UploadDataToJson(UploadData entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['relative_path'] = entity.relativePath;
data['absolute_path'] = entity.absolutePath;
return data;
}
UploadError $UploadErrorFromJson(Map<String, dynamic> json) {
final UploadError uploadError = UploadError();
return uploadError;
}
Map<String, dynamic> $UploadErrorToJson(UploadError entity) {
final Map<String, dynamic> data = <String, dynamic>{};
return data;
}
\ No newline at end of file
import 'dart:convert';
import 'package:Parlando/generated/json/base/json_field.dart';
import 'package:Parlando/generated/json/upload_entity.g.dart';
@JsonSerializable()
class UploadEntity {
String? status;
int? code;
String? message;
UploadData? data;
UploadError? error;
UploadEntity();
factory UploadEntity.fromJson(Map<String, dynamic> json) => $UploadEntityFromJson(json);
Map<String, dynamic> toJson() => $UploadEntityToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class UploadData {
@JSONField(name: "relative_path")
String? relativePath;
@JSONField(name: "absolute_path")
String? absolutePath;
UploadData();
factory UploadData.fromJson(Map<String, dynamic> json) => $UploadDataFromJson(json);
Map<String, dynamic> toJson() => $UploadDataToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class UploadError {
UploadError();
factory UploadError.fromJson(Map<String, dynamic> json) => $UploadErrorFromJson(json);
Map<String, dynamic> toJson() => $UploadErrorToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ class HttpApi {
static const String verify = 'verify';
static const String login = 'login';
static const String uploadVideo = 'upload/video';
static const String immersive = 'immersive';
static const String user = 'user';
static const String search = 'search/repositories';
static const String subscriptions = 'users/simplezhli/subscriptions';
......
import 'package:Parlando/models/upload_entity.dart';
import 'package:Parlando/net/dio_utils.dart';
import 'package:Parlando/net/http_api.dart';
import 'package:Parlando/util/toast_utils.dart';
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
......@@ -231,14 +233,36 @@ class _PoemPublishState extends State<PoemPublish> {
"video": value,
};
FormData formData = FormData.fromMap(map);
DioUtils.instance.asyncRequestNetwork(
DioUtils.instance.asyncRequestNetwork<UploadEntity>(
Method.post,
HttpApi.uploadVideo,
params: formData,
onSuccess: (data) {
print(data);
//TODO 上传视频成功之后创建临境
String path = data!.data!.relativePath!;
String videoId = "1"; //TODO 临时用video id
Map<String, String> params = <String, String>{
"video_id": videoId,
"video_url": path,
"content": msg,
};
DioUtils.instance.asyncRequestNetwork(
Method.post,
HttpApi.immersive,
params: params,
onSuccess: (data) {
isPublishing = false;
NavigatorUtils.push(
context,
'${PoemRouter.poemCompletePage}?id=100',
);
},
onError: (code, msg) {
Toast.show(msg.toString());
isPublishing = false;
setState(() {});
},
);
},
onError: (code, msg) {
isPublishing = false;
......@@ -246,14 +270,6 @@ class _PoemPublishState extends State<PoemPublish> {
},
);
});
// TODO 等待套入正式接口发布临境
// await Future.delayed(const Duration(seconds: 2), () {
// NavigatorUtils.push(
// context,
// '${PoemRouter.poemCompletePage}?id=100',
// );
// });
}
Future<bool> _isExit() async {
......