Skip to content

Commit

Permalink
i18n: error codes for dashboard operations
Browse files Browse the repository at this point in the history
  • Loading branch information
HFO4 committed Jul 18, 2022
1 parent 9869671 commit a188067
Show file tree
Hide file tree
Showing 11 changed files with 98 additions and 70 deletions.
2 changes: 1 addition & 1 deletion assets
Submodule assets updated 57 files
+2 −0 package.json
+21 −2 public/locales/en-US/application.json
+8 −2 public/locales/en-US/common.json
+527 −8 public/locales/en-US/dashboard.json
+26 −8 public/locales/zh-CN/application.json
+8 −2 public/locales/zh-CN/common.json
+518 −0 public/locales/zh-CN/dashboard.json
+18 −15 src/component/Admin/Dialogs/AddPolicy.js
+15 −7 src/component/Admin/Dialogs/FileFilter.js
+27 −24 src/component/Admin/Dialogs/MagicVar.js
+17 −9 src/component/Admin/Dialogs/ShareFilter.js
+17 −12 src/component/Admin/Dialogs/UserFilter.js
+23 −26 src/component/Admin/File/File.js
+35 −25 src/component/Admin/File/Import.js
+3 −1 src/component/Admin/Group/EditGroup.js
+15 −11 src/component/Admin/Group/Group.js
+40 −46 src/component/Admin/Group/GroupForm.js
+81 −72 src/component/Admin/Node/Guide/Aria2RPC.js
+56 −45 src/component/Admin/Node/Guide/Communication.js
+6 −12 src/component/Admin/Node/Guide/Completed.js
+7 −7 src/component/Admin/Node/Guide/Metainfo.js
+13 −8 src/component/Admin/Node/Guide/NodeGuide.js
+21 −22 src/component/Admin/Node/Node.js
+195 −188 src/component/Admin/Policy/Guid/COSGuide.js
+69 −85 src/component/Admin/Policy/Guid/EditPro.js
+81 −78 src/component/Admin/Policy/Guid/LocalGuide.js
+163 −150 src/component/Admin/Policy/Guid/OSSGuide.js
+173 −153 src/component/Admin/Policy/Guid/OneDriveGuide.js
+117 −106 src/component/Admin/Policy/Guid/QiniuGuide.js
+115 −99 src/component/Admin/Policy/Guid/RemoteGuide.js
+113 −105 src/component/Admin/Policy/Guid/S3Guide.js
+104 −97 src/component/Admin/Policy/Guid/UpyunGuide.js
+33 −30 src/component/Admin/Policy/Policy.js
+33 −19 src/component/Admin/Share/Share.js
+39 −24 src/component/Admin/Task/Aria2Helper.js
+35 −24 src/component/Admin/Task/Download.js
+22 −15 src/component/Admin/Task/Task.js
+27 −20 src/component/Admin/User/User.js
+24 −15 src/component/Admin/User/UserForm.js
+189 −132 src/component/Download/DownloadingCard.js
+104 −63 src/component/Download/FinishedCard.js
+32 −1 src/component/FileManager/ContextMenu.js
+0 −1 src/component/FileManager/FileManager.js
+7 −0 src/component/FileManager/Modals.js
+107 −0 src/component/Modals/DirectoryDownload.js
+13 −5 src/component/Modals/SelectFile.js
+64 −17 src/component/Navbar/Navbar.js
+18 −13 src/component/Viewer/Video.js
+0 −10 src/config.ts
+1 −1 src/i18n.ts
+7 −1 src/middleware/Api.ts
+17 −25 src/middleware/Auth.ts
+309 −8 src/redux/explorer/action.ts
+9 −0 src/redux/explorer/index.ts
+18 −0 src/redux/viewUpdate/reducer.ts
+81 −0 src/utils/filesystem.ts
+49 −0 yarn.lock
28 changes: 28 additions & 0 deletions pkg/serializer/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,30 @@ const (
CodeEmailSent = 40033
// CodeUserCannotActivate 用户无法激活
CodeUserCannotActivate = 40034
// 存储策略不存在
CodePolicyNotExist = 40035
// 无法删除默认存储策略
CodeDeleteDefaultPolicy = 40036
// 存储策略下还有文件
CodePolicyUsedByFiles = 40037
// 存储策略绑定了用户组
CodePolicyUsedByGroups = 40038
// 用户组不存在
CodeGroupNotFound = 40039
// 对系统用户组执行非法操作
CodeInvalidActionOnSystemGroup = 40040
// 用户组正在被使用
CodeGroupUsedByUser = 40041
// 为初始用户更改用户组
CodeChangeGroupForDefaultUser = 40042
// 对系统用户执行非法操作
CodeInvalidActionOnDefaultUser = 40043
// 文件不存在
CodeFileNotFound = 40044
// 列取文件失败
CodeListFilesError = 40045
// 对系统节点进行非法操作
CodeInvalidActionOnSystemNode = 40046
// CodeDBError 数据库操作失败
CodeDBError = 50001
// CodeEncryptError 加密失败
Expand All @@ -130,6 +154,10 @@ const (
CodeCacheOperation = 50006
// CodeCallbackError 回调失败
CodeCallbackError = 50007
// 后台设置更新失败
CodeUpdateSetting = 50008
// 跨域策略添加失败
CodeAddCORS = 50009
//CodeParamErr 各种奇奇怪怪的参数错误
CodeParamErr = 40001
// CodeNotSet 未定错误,后续尝试从error中获取
Expand Down
10 changes: 5 additions & 5 deletions service/admin/aria2.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ type Aria2TestService struct {
func (service *Aria2TestService) TestMaster() serializer.Response {
res, err := aria2.TestRPCConnection(service.RPC, service.Token, 5)
if err != nil {
return serializer.ParamErr(err.Error(), err)
return serializer.ParamErr("Failed to connect to RPC server: "+err.Error(), err)
}

if res.Version == "" {
return serializer.ParamErr("RPC 服务返回非预期响应", nil)
return serializer.ParamErr("RPC server returns unexpected response", nil)
}

return serializer.Response{Data: res.Version}
Expand All @@ -39,7 +39,7 @@ func (service *Aria2TestService) TestMaster() serializer.Response {
func (service *Aria2TestService) TestSlave() serializer.Response {
slave, err := url.Parse(service.Server)
if err != nil {
return serializer.ParamErr("无法解析从机端地址,"+err.Error(), nil)
return serializer.ParamErr("Cannot parse slave server URL, "+err.Error(), nil)
}

controller, _ := url.Parse("/api/v3/slave/ping/aria2")
Expand All @@ -60,11 +60,11 @@ func (service *Aria2TestService) TestSlave() serializer.Response {
),
).DecodeResponse()
if err != nil {
return serializer.ParamErr("无连接到从机,"+err.Error(), nil)
return serializer.ParamErr("Failed to connect to slave node, "+err.Error(), nil)
}

if res.Code != 0 {
return serializer.ParamErr("成功接到从机,但是从机返回:"+res.Msg, nil)
return serializer.ParamErr("Successfully connected to slave, but slave returns: "+res.Msg, nil)
}

return serializer.Response{Data: res.Data.(string)}
Expand Down
16 changes: 8 additions & 8 deletions service/admin/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,21 +36,21 @@ func (service *ListFolderService) List(c *gin.Context) serializer.Response {
// 列取存储策略中的目录
policy, err := model.GetPolicyByID(service.ID)
if err != nil {
return serializer.Err(serializer.CodeNotFound, "存储策略不存在", err)
return serializer.Err(serializer.CodePolicyNotExist, "", err)
}

// 创建文件系统
fs, err := filesystem.NewAnonymousFileSystem()
if err != nil {
return serializer.Err(serializer.CodeInternalSetting, "无法创建文件系统", err)
return serializer.Err(serializer.CodeInternalSetting, "Failed to create filesystem.", err)
}
defer fs.Recycle()

// 列取存储策略中的文件
fs.Policy = &policy
res, err := fs.ListPhysical(c.Request.Context(), service.Path)
if err != nil {
return serializer.Err(serializer.CodeIOFailed, "无法列取目录", err)
return serializer.Err(serializer.CodeListFilesError, "", err)
}

return serializer.Response{
Expand All @@ -63,20 +63,20 @@ func (service *ListFolderService) List(c *gin.Context) serializer.Response {
// 查找用户
user, err := model.GetUserByID(service.ID)
if err != nil {
return serializer.Err(serializer.CodeNotFound, "用户不存在", err)
return serializer.Err(serializer.CodeUserNotFound, "用户不存在", err)
}

// 创建文件系统
fs, err := filesystem.NewFileSystem(&user)
if err != nil {
return serializer.Err(serializer.CodeInternalSetting, "无法创建文件系统", err)
return serializer.Err(serializer.CodeInternalSetting, "Failed to create filesystem.", err)
}
defer fs.Recycle()

// 列取目录
res, err := fs.List(c.Request.Context(), service.Path, nil)
if err != nil {
return serializer.Err(serializer.CodeIOFailed, "无法列取目录", err)
return serializer.Err(serializer.CodeListFilesError, "", err)
}

return serializer.Response{
Expand All @@ -88,7 +88,7 @@ func (service *ListFolderService) List(c *gin.Context) serializer.Response {
func (service *FileBatchService) Delete(c *gin.Context) serializer.Response {
files, err := model.GetFilesByIDs(service.ID, 0)
if err != nil {
return serializer.DBErr("无法列出待删除文件", err)
return serializer.DBErr("Failed to list files for deleting", err)
}

// 根据用户分组
Expand Down Expand Up @@ -135,7 +135,7 @@ func (service *FileBatchService) Delete(c *gin.Context) serializer.Response {
func (service *FileService) Get(c *gin.Context) serializer.Response {
file, err := model.GetFilesByIDs([]uint{service.ID}, 0)
if err != nil {
return serializer.Err(serializer.CodeNotFound, "文件不存在", err)
return serializer.Err(serializer.CodeFileNotFound, "", err)
}

ctx := context.WithValue(context.Background(), fsctx.FileModelCtx, &file[0])
Expand Down
15 changes: 7 additions & 8 deletions service/admin/group.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package admin

import (
"fmt"

model "github.com/cloudreve/Cloudreve/v3/models"
"github.com/cloudreve/Cloudreve/v3/pkg/serializer"
"strconv"
)

// AddGroupService 用户组添加服务
Expand All @@ -21,7 +20,7 @@ type GroupService struct {
func (service *GroupService) Get() serializer.Response {
group, err := model.GetGroupByID(service.ID)
if err != nil {
return serializer.Err(serializer.CodeNotFound, "存储策略不存在", err)
return serializer.Err(serializer.CodeGroupNotFound, "", err)
}

return serializer.Response{Data: group}
Expand All @@ -32,12 +31,12 @@ func (service *GroupService) Delete() serializer.Response {
// 查找用户组
group, err := model.GetGroupByID(service.ID)
if err != nil {
return serializer.Err(serializer.CodeNotFound, "用户组不存在", err)
return serializer.Err(serializer.CodeGroupNotFound, "", err)
}

// 是否为系统用户组
if group.ID <= 3 {
return serializer.Err(serializer.CodeNoPermissionErr, "系统用户组无法删除", err)
return serializer.Err(serializer.CodeInvalidActionOnSystemGroup, "", err)
}

// 检查是否有用户使用
Expand All @@ -46,7 +45,7 @@ func (service *GroupService) Delete() serializer.Response {
Select("count(id)").Row()
row.Scan(&total)
if total > 0 {
return serializer.ParamErr(fmt.Sprintf("有 %d 位用户仍属于此用户组,请先删除这些用户或者更改用户组", total), nil)
return serializer.Err(serializer.CodeGroupUsedByUser, strconv.Itoa(total), nil)
}

model.DB.Delete(&group)
Expand All @@ -58,11 +57,11 @@ func (service *GroupService) Delete() serializer.Response {
func (service *AddGroupService) Add() serializer.Response {
if service.Group.ID > 0 {
if err := model.DB.Save(&service.Group).Error; err != nil {
return serializer.ParamErr("用户组保存失败", err)
return serializer.DBErr("Failed to save group record", err)
}
} else {
if err := model.DB.Create(&service.Group).Error; err != nil {
return serializer.ParamErr("用户组添加失败", err)
return serializer.DBErr("Failed to create group record", err)
}
}

Expand Down
18 changes: 9 additions & 9 deletions service/admin/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ type AddNodeService struct {
func (service *AddNodeService) Add() serializer.Response {
if service.Node.ID > 0 {
if err := model.DB.Save(&service.Node).Error; err != nil {
return serializer.ParamErr("节点保存失败", err)
return serializer.DBErr("Failed to save node record", err)
}
} else {
if err := model.DB.Create(&service.Node).Error; err != nil {
return serializer.ParamErr("节点添加失败", err)
return serializer.DBErr("Failed to create node record", err)
}
}

Expand Down Expand Up @@ -84,16 +84,16 @@ type ToggleNodeService struct {
func (service *ToggleNodeService) Toggle() serializer.Response {
node, err := model.GetNodeByID(service.ID)
if err != nil {
return serializer.DBErr("找不到节点", err)
return serializer.DBErr("Node not found", err)
}

// 是否为系统节点
if node.ID <= 1 {
return serializer.Err(serializer.CodeNoPermissionErr, "系统节点无法更改", err)
return serializer.Err(serializer.CodeInvalidActionOnSystemNode, "", err)
}

if err = node.SetStatus(service.Desired); err != nil {
return serializer.DBErr("无法更改节点状态", err)
return serializer.DBErr("Failed to change node status", err)
}

if service.Desired == model.NodeActive {
Expand All @@ -115,17 +115,17 @@ func (service *NodeService) Delete() serializer.Response {
// 查找用户组
node, err := model.GetNodeByID(service.ID)
if err != nil {
return serializer.Err(serializer.CodeNotFound, "节点不存在", err)
return serializer.DBErr("Node record not found", err)
}

// 是否为系统节点
if node.ID <= 1 {
return serializer.Err(serializer.CodeNoPermissionErr, "系统节点无法删除", err)
return serializer.Err(serializer.CodeInvalidActionOnSystemNode, "", err)
}

cluster.Default.Delete(node.ID)
if err := model.DB.Delete(&node).Error; err != nil {
return serializer.DBErr("无法删除节点", err)
return serializer.DBErr("Failed to delete node record", err)
}

return serializer.Response{}
Expand All @@ -135,7 +135,7 @@ func (service *NodeService) Delete() serializer.Response {
func (service *NodeService) Get() serializer.Response {
node, err := model.GetNodeByID(service.ID)
if err != nil {
return serializer.Err(serializer.CodeNotFound, "节点不存在", err)
return serializer.DBErr("Node not exist", err)
}

return serializer.Response{Data: node}
Expand Down
Loading

0 comments on commit a188067

Please sign in to comment.