Skip to content

Commit 9c4584d

Browse files
committed
store.createSubject allows creating nested paths
1 parent 6bbfbf3 commit 9c4584d

File tree

6 files changed

+15
-6
lines changed

6 files changed

+15
-6
lines changed

CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ This changelog covers all three packages, as they are (for now) updated as a who
44

55
## UNRELEASED
66

7+
- Let users register using e-mail address, improve sign-up UX.
78
- Add `Store.parseMetaTags` to load JSON-AD objects stored in the DOM. Speeds up initial page load by allowing server to set JSON-AD objects in the initial HTML response.
89
- Move static assets around, align build with server and fix PWA #292
9-
- Let users register using e-mail address, improve sign-up UX.
10+
- `store.createSubject` allows creating nested paths
1011

1112
## v0.35.0
1213

data-browser/src/components/NewInstanceButton/useCreateAndNavigate.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export function useCreateAndNavigate(klass: string, parent?: string) {
3434
/** Do not set a parent for the new resource. Useful for top-level resources */
3535
noParent?: boolean,
3636
): Promise<Resource> => {
37-
const subject = store.createSubject(className);
37+
const subject = store.createSubject(className, parent);
3838
const resource = new Resource(subject, true);
3939

4040
await Promise.all([

data-browser/src/components/NewInstanceButton/useDefaultNewInstanceHandler.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
import { useCallback } from 'react';
99
import { useNavigate } from 'react-router-dom';
1010
import { useSettings } from '../../helpers/AppSettings';
11+
import { handleError } from '../../helpers/loggingHandlers';
1112
import { newURL } from '../../helpers/navigation';
1213
import { useCreateAndNavigate } from './useCreateAndNavigate';
1314

@@ -99,7 +100,7 @@ export function useDefaultNewInstanceHandler(klass: string, parent?: string) {
99100
}
100101
}
101102
} catch (e) {
102-
store.handleError(e);
103+
store.notifyError(e);
103104
}
104105
}, [klass, store, parent, createResourceAndNavigate]);
105106

data-browser/src/views/ChatRoomPage.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ export function ChatRoomPage({ resource }: ResourcePageProps) {
7575
e && e.preventDefault();
7676

7777
if (!disableSend) {
78-
const subject = store.createSubject('messages');
78+
const subject = store.createSubject('messages', resource.getSubject());
7979
const msgResource = new Resource(subject, true);
8080
await msgResource.set(
8181
properties.parent,

data-browser/src/views/DocumentPage.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,10 @@ function DocumentPageEdit({
187187
async function addElement(position: number) {
188188
// When an element is created, it should be a Resource that has this document as its parent.
189189
// or maybe a nested resource?
190-
const elementSubject = store.createSubject('element');
190+
const elementSubject = store.createSubject(
191+
'element',
192+
resource.getSubject(),
193+
);
191194
elements.splice(position, 0, elementSubject);
192195

193196
try {

lib/src/store.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -166,10 +166,14 @@ export class Store {
166166
}
167167

168168
/** Creates a random URL. Add a classnme (e.g. 'persons') to make a nicer name */
169-
public createSubject(className?: string): string {
169+
public createSubject(className?: string, parentSubject?: string): string {
170170
const random = this.randomPart();
171171
className = className ? className : 'things';
172172

173+
if (parentSubject) {
174+
return `${parentSubject}/${className}/${random}`;
175+
}
176+
173177
return `${this.getServerUrl()}/${className}/${random}`;
174178
}
175179

0 commit comments

Comments
 (0)