Fix SCUM file list capability fallback
This commit is contained in:
@@ -150,6 +150,22 @@ func (svc *CoreService) RefreshServerFileListForSession(sessionID string, reques
|
||||
if err != nil {
|
||||
return domain.ServerFileListResult{}, err
|
||||
}
|
||||
endpoint, err := svc.GetRunEndpoint(ctx.Instance.RunEndpointID)
|
||||
if err != nil {
|
||||
return domain.ServerFileListResult{}, err
|
||||
}
|
||||
entries := filterServerFileEntries(serverFileEntriesFromDeclaredWorkspace(ctx.Workspace, request.DirectoryKey), request.Query)
|
||||
if !containsString(endpoint.Capabilities, domain.JobCapabilityFilesList) {
|
||||
return domain.CopyServerFileListResult(domain.ServerFileListResult{
|
||||
ServerInstanceID: ctx.Instance.ID,
|
||||
PluginID: ctx.Plugin.ID,
|
||||
DirectoryKey: request.DirectoryKey,
|
||||
Path: request.Path,
|
||||
State: "ready",
|
||||
Entries: entries,
|
||||
Reason: "当前 Run 未声明 files.list,已展示插件声明的逻辑文件。",
|
||||
}), nil
|
||||
}
|
||||
job, err := svc.CreateJob(domain.Job{
|
||||
ID: jobIDFromParts("job-file-list", request.ServerInstanceID, request.IdempotencyKey),
|
||||
ServerInstanceID: ctx.Instance.ID,
|
||||
@@ -169,7 +185,6 @@ func (svc *CoreService) RefreshServerFileListForSession(sessionID string, reques
|
||||
if err != nil {
|
||||
return domain.ServerFileListResult{}, err
|
||||
}
|
||||
entries := filterServerFileEntries(serverFileEntriesFromDeclaredWorkspace(ctx.Workspace, request.DirectoryKey), request.Query)
|
||||
return domain.CopyServerFileListResult(domain.ServerFileListResult{ServerInstanceID: ctx.Instance.ID, PluginID: ctx.Plugin.ID, DirectoryKey: request.DirectoryKey, Path: request.Path, State: "pending", Entries: entries, Job: job, Reason: "目录刷新任务已派发到 Run。"}), nil
|
||||
}
|
||||
|
||||
@@ -365,7 +380,14 @@ func (svc *CoreService) serverFileContextForSession(sessionID string, serverInst
|
||||
return serverFileContext{User: user, Instance: instance, Plugin: plugin, Directory: directory, Workspace: workspace, Scope: svc.runtimeProfileScope(instance.ID)}, nil
|
||||
}
|
||||
|
||||
func effectiveServerFileWorkspace(_ domain.GamePlugin) domain.PluginFileWorkspace {
|
||||
func effectiveServerFileWorkspace(plugin domain.GamePlugin) domain.PluginFileWorkspace {
|
||||
workspace := domain.CopyPluginFileWorkspace(plugin.FileWorkspace)
|
||||
if serverFileWorkspaceIsPluginDeclared(workspace) {
|
||||
if workspace.DefaultDirectoryKey == "" && len(workspace.Directories) > 0 {
|
||||
workspace.DefaultDirectoryKey = workspace.Directories[0].Key
|
||||
}
|
||||
return workspace
|
||||
}
|
||||
return domain.PluginFileWorkspace{DefaultDirectoryKey: serverFileDefaultDirectoryKey, Directories: []domain.PluginLogicalDirectory{{Key: serverFileDefaultDirectoryKey, Label: "服务器根目录", Scope: "config"}}, Files: []domain.PluginLogicalFile{}, ConfigFields: []domain.PluginConfigField{}}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user