Skip to content

Commit 0c073d1

Browse files
authored
Merge pull request #1087 from amvanbaren/namespace-details-url
Use detailsUrl to update namespace details
2 parents 3f10591 + 641f92d commit 0c073d1

File tree

6 files changed

+32
-18
lines changed

6 files changed

+32
-18
lines changed

server/src/main/java/org/eclipse/openvsx/UserAPI.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ public List<NamespaceJson> getOwnNamespaces() {
230230
if(isOwner) {
231231
json.setMembersUrl(createApiUrl(serverUrl, "user", "namespace", namespace.getName(), "members"));
232232
json.setRoleUrl(createApiUrl(serverUrl, "user", "namespace", namespace.getName(), "role"));
233+
json.setDetailsUrl(createApiUrl(serverUrl, "user", "namespace", namespace.getName(), "details"));
233234
}
234235

235236
return json;

server/src/main/java/org/eclipse/openvsx/json/NamespaceJson.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ public static NamespaceJson error(String message) {
5555
@Schema(hidden = true)
5656
private String roleUrl;
5757

58+
@Schema(hidden = true)
59+
private String detailsUrl;
60+
5861
public String getName() {
5962
return name;
6063
}
@@ -102,4 +105,12 @@ public String getRoleUrl() {
102105
public void setRoleUrl(String roleUrl) {
103106
this.roleUrl = roleUrl;
104107
}
108+
109+
public String getDetailsUrl() {
110+
return detailsUrl;
111+
}
112+
113+
public void setDetailsUrl(String detailsUrl) {
114+
this.detailsUrl = detailsUrl;
115+
}
105116
}

webui/src/extension-registry-service.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ export class ExtensionRegistryService {
4949
return sendRequest({ abortController, endpoint });
5050
}
5151

52-
async setNamespaceDetails(abortController: AbortController, details: NamespaceDetails): Promise<Readonly<SuccessResult | ErrorResult>> {
52+
async setNamespaceDetails(abortController: AbortController, endpoint: string, details: NamespaceDetails): Promise<Readonly<SuccessResult | ErrorResult>> {
5353
const csrfResponse = await this.getCsrfToken(abortController);
5454
const headers: Record<string, string> = {
5555
'Content-Type': 'application/json;charset=UTF-8'
@@ -59,7 +59,6 @@ export class ExtensionRegistryService {
5959
headers[csrfToken.header] = csrfToken.value;
6060
}
6161

62-
const endpoint = createAbsoluteURL([this.serverUrl, 'user', 'namespace', details.name, 'details']);
6362
return sendRequest({
6463
abortController,
6564
method: 'POST',
@@ -70,7 +69,7 @@ export class ExtensionRegistryService {
7069
});
7170
}
7271

73-
async setNamespaceLogo(abortController: AbortController, namespace: string, logoFile: Blob, logoName: string): Promise<Readonly<SuccessResult | ErrorResult>> {
72+
async setNamespaceLogo(abortController: AbortController, endpoint: string, logoFile: Blob, logoName: string): Promise<Readonly<SuccessResult | ErrorResult>> {
7473
const csrfResponse = await this.getCsrfToken(abortController);
7574
const headers: Record<string, string> = {};
7675
if (!isError(csrfResponse)) {
@@ -80,7 +79,7 @@ export class ExtensionRegistryService {
8079

8180
const form = new FormData();
8281
form.append('file', logoFile, logoName);
83-
const endpoint = createAbsoluteURL([this.serverUrl, 'user', 'namespace', namespace, 'details', 'logo']);
82+
endpoint = createAbsoluteURL([endpoint, 'logo']);
8483
return sendRequest({
8584
abortController,
8685
method: 'POST',

webui/src/extension-registry-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ export interface Namespace {
220220
verified: boolean;
221221
membersUrl: UrlString;
222222
roleUrl: UrlString;
223+
detailsUrl: UrlString;
223224
}
224225

225226
export interface NamespaceDetails {

webui/src/pages/user/user-namespace-details.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,14 +194,14 @@ export const UserNamespaceDetails: FunctionComponent<UserNamespaceDetailsProps>
194194
? 'https://twitter.com/' + details.socialLinks.twitter
195195
: undefined;
196196

197-
const result = await context.service.setNamespaceDetails(abortController.current, details);
197+
const result = await context.service.setNamespaceDetails(abortController.current, props.namespace.detailsUrl, details);
198198
if (isError(result)) {
199199
throw result;
200200
}
201201

202202
if (logoPreview) {
203203
const logoFile = await (await fetch(logoPreview)).blob();
204-
await context.service.setNamespaceLogo(abortController.current, details.name, logoFile, details.logo as string);
204+
await context.service.setNamespaceLogo(abortController.current, props.namespace.detailsUrl, logoFile, details.logo as string);
205205
await getNamespaceDetails();
206206
} else {
207207
setCurrentDetails(copy(newDetails));

webui/src/pages/user/user-settings-namespace-detail.tsx

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,18 +108,20 @@ export const NamespaceDetail: FunctionComponent<NamespaceDetailProps> = props =>
108108
</Grid>
109109
{
110110
props.namespace.membersUrl
111-
? <>
112-
<Grid item>
113-
<UserNamespaceMemberList
114-
setLoadingState={props.setLoadingState}
115-
namespace={props.namespace}
116-
filterUsers={props.filterUsers}
117-
fixSelf={props.fixSelf} />
118-
</Grid>
119-
<Grid item>
120-
<UserNamespaceDetails namespace={props.namespace}/>
121-
</Grid>
122-
</>
111+
? <Grid item>
112+
<UserNamespaceMemberList
113+
setLoadingState={props.setLoadingState}
114+
namespace={props.namespace}
115+
filterUsers={props.filterUsers}
116+
fixSelf={props.fixSelf} />
117+
</Grid>
118+
: null
119+
}
120+
{
121+
props.namespace.detailsUrl
122+
? <Grid item>
123+
<UserNamespaceDetails namespace={props.namespace}/>
124+
</Grid>
123125
: null
124126
}
125127
<Grid item>

0 commit comments

Comments
 (0)