feat: not allow upload scheme with name occupied.
This commit is contained in:
@@ -40,3 +40,9 @@ enum PanelType {
|
||||
local_manager,
|
||||
market_or_me,
|
||||
}
|
||||
|
||||
enum UploadRespStatus {
|
||||
done,
|
||||
name_occupied,
|
||||
error,
|
||||
}
|
||||
+13
-2
@@ -1,6 +1,7 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:dde_gesture_manager/constants/constants.dart';
|
||||
import 'package:dde_gesture_manager/constants/sp_keys.dart';
|
||||
import 'package:dde_gesture_manager/extensions.dart';
|
||||
import 'package:dde_gesture_manager/models/scheme.dart' as AppScheme;
|
||||
@@ -146,7 +147,7 @@ class Api {
|
||||
static Future<bool> checkAuthStatus() => _get<int>(Apis.auth.status, getStatusCodeFunc, ignoreErrorHandle: true)
|
||||
.then((value) => value == HttpStatus.noContent);
|
||||
|
||||
static Future<bool> uploadScheme({required AppScheme.Scheme scheme, required bool share}) => _post(
|
||||
static Future<UploadRespStatus> uploadScheme({required AppScheme.Scheme scheme, required bool share}) => _post(
|
||||
Apis.scheme.upload,
|
||||
getStatusCodeFunc,
|
||||
body: SchemeSerializer.toMap(
|
||||
@@ -158,7 +159,17 @@ class Api {
|
||||
shared: share,
|
||||
),
|
||||
),
|
||||
).then((value) => value == HttpStatus.noContent);
|
||||
).then((value) {
|
||||
switch (value) {
|
||||
case HttpStatus.noContent:
|
||||
return UploadRespStatus.done;
|
||||
case HttpStatus.locked:
|
||||
return UploadRespStatus.name_occupied;
|
||||
case HttpStatus.unprocessableEntity:
|
||||
default:
|
||||
return UploadRespStatus.error;
|
||||
}
|
||||
});
|
||||
|
||||
static Future<List<SimpleSchemeTransMetaData>?> userSchemes({required SchemeListType type}) =>
|
||||
_get(Apis.scheme.user(type: type.name.param), listRespBuilderWrap(SimpleSchemeTransMetaDataSerializer.fromMap));
|
||||
|
||||
@@ -301,6 +301,10 @@ class GestureEditor extends StatelessWidget {
|
||||
child: DButton.upload(
|
||||
enabled: schemeProvider.readOnly == false,
|
||||
onTap: () async {
|
||||
if (schemeProvider.description.isNull) {
|
||||
Notificator.error(context, title: LocaleKeys.info_upload_pls_add_description.tr());
|
||||
return;
|
||||
}
|
||||
if (context.read<ConfigsProvider>().accessToken.isNull) {
|
||||
return Notificator.showAlert(
|
||||
title: LocaleKeys.info_login_for_upload_title.tr(),
|
||||
@@ -326,7 +330,7 @@ class GestureEditor extends StatelessWidget {
|
||||
|
||||
if (_share != null) {
|
||||
Api.uploadScheme(scheme: schemeProvider, share: _share).then((value) {
|
||||
if (value) {
|
||||
if (value == UploadRespStatus.done) {
|
||||
Notificator.success(context, title: LocaleKeys.info_upload_success.tr());
|
||||
var localSchemesProvider = context.read<LocalSchemesProvider>();
|
||||
var localSchemeEntry = localSchemesProvider.schemes!
|
||||
@@ -336,6 +340,12 @@ class GestureEditor extends StatelessWidget {
|
||||
context
|
||||
.read<SchemeListRefreshKeyProvider>()
|
||||
.setProps(refreshKey: DateTime.now().millisecondsSinceEpoch);
|
||||
} else if (value == UploadRespStatus.name_occupied) {
|
||||
Notificator.error(
|
||||
context,
|
||||
title: LocaleKeys.info_upload_name_occupied.tr(),
|
||||
description: LocaleKeys.info_upload_pls_rename.tr(),
|
||||
);
|
||||
} else {
|
||||
Notificator.error(context, title: LocaleKeys.info_upload_failed.tr());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user