mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Persist forks in home db
Summary: Adds information about forks to the home db. This will be used later by the UI to list forks of documents. Test Plan: Browser and server tests. Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D3772
This commit is contained in:
@@ -169,6 +169,7 @@ export interface QueryResult extends TableFetchResult {
|
||||
* docId of XXXXX~FORKID[~USERID] and a urlId of UUUUU~FORKID[~USERID].
|
||||
*/
|
||||
export interface ForkResult {
|
||||
forkId: string;
|
||||
docId: string;
|
||||
urlId: string;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {ActionSummary} from 'app/common/ActionSummary';
|
||||
import {ApplyUAResult, PermissionDataWithExtraUsers, QueryFilters} from 'app/common/ActiveDocAPI';
|
||||
import {ApplyUAResult, ForkResult, PermissionDataWithExtraUsers, QueryFilters} from 'app/common/ActiveDocAPI';
|
||||
import {BaseAPI, IOptions} from 'app/common/BaseAPI';
|
||||
import {BillingAPI, BillingAPIImpl} from 'app/common/BillingAPI';
|
||||
import {BrowserSettings} from 'app/common/BrowserSettings';
|
||||
@@ -108,6 +108,8 @@ export interface Workspace extends WorkspaceProperties {
|
||||
isSupportWorkspace?: boolean;
|
||||
}
|
||||
|
||||
export type DocumentType = 'tutorial';
|
||||
|
||||
// Non-core options for a document.
|
||||
// "Non-core" means bundled into a single options column in the database.
|
||||
// TODO: consider smoothing over this distinction in the API.
|
||||
@@ -120,6 +122,8 @@ export interface DocumentOptions {
|
||||
export interface DocumentProperties extends CommonProperties {
|
||||
isPinned: boolean;
|
||||
urlId: string|null;
|
||||
trunkId: string|null;
|
||||
type: DocumentType|null;
|
||||
options: DocumentOptions|null;
|
||||
}
|
||||
|
||||
@@ -130,6 +134,13 @@ export interface Document extends DocumentProperties {
|
||||
workspace: Workspace;
|
||||
access: roles.Role;
|
||||
trunkAccess?: roles.Role|null;
|
||||
forks?: Fork[];
|
||||
}
|
||||
|
||||
export interface Fork {
|
||||
id: string;
|
||||
trunkId: string;
|
||||
updatedAt: string; // ISO date string
|
||||
}
|
||||
|
||||
// Non-core options for a user.
|
||||
@@ -385,6 +396,7 @@ export interface DocAPI {
|
||||
updateRows(tableId: string, changes: TableColValues): Promise<number[]>;
|
||||
addRows(tableId: string, additions: BulkColValues): Promise<number[]>;
|
||||
removeRows(tableId: string, removals: number[]): Promise<number[]>;
|
||||
fork(): Promise<ForkResult>;
|
||||
replace(source: DocReplacementOptions): Promise<void>;
|
||||
// Get list of document versions (specify raw to bypass caching, which should only make
|
||||
// a difference if snapshots have "leaked")
|
||||
@@ -837,6 +849,12 @@ export class DocAPIImpl extends BaseAPI implements DocAPI {
|
||||
});
|
||||
}
|
||||
|
||||
public async fork(): Promise<ForkResult> {
|
||||
return this.requestJson(`${this._url}/fork`, {
|
||||
method: 'POST'
|
||||
});
|
||||
}
|
||||
|
||||
public async replace(source: DocReplacementOptions): Promise<void> {
|
||||
return this.requestJson(`${this._url}/replace`, {
|
||||
body: JSON.stringify(source),
|
||||
|
||||
Reference in New Issue
Block a user