mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) move home server into core
Summary: This moves enough server material into core to run a home server. The data engine is not yet incorporated (though in manual testing it works when ported). Test Plan: existing tests pass Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2552
This commit is contained in:
49
app/server/lib/DocSession.ts
Normal file
49
app/server/lib/DocSession.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import {BrowserSettings} from 'app/common/BrowserSettings';
|
||||
import {ActiveDoc} from 'app/server/lib/ActiveDoc';
|
||||
import {Authorizer, RequestWithLogin} from 'app/server/lib/Authorizer';
|
||||
import {Client} from 'app/server/lib/Client';
|
||||
|
||||
/**
|
||||
* OptDocSession allows for certain ActiveDoc operations to work with or without an open document.
|
||||
* It is useful in particular for actions when importing a file to create a new document.
|
||||
*/
|
||||
export interface OptDocSession {
|
||||
client: Client|null;
|
||||
shouldBundleActions?: boolean;
|
||||
linkId?: number;
|
||||
browserSettings?: BrowserSettings;
|
||||
req?: RequestWithLogin;
|
||||
}
|
||||
|
||||
export function makeOptDocSession(client: Client|null, browserSettings?: BrowserSettings): OptDocSession {
|
||||
if (client && !browserSettings) { browserSettings = client.browserSettings; }
|
||||
return {client, browserSettings};
|
||||
}
|
||||
|
||||
/**
|
||||
* DocSession objects maintain information for a single session<->doc instance.
|
||||
*/
|
||||
export class DocSession implements OptDocSession {
|
||||
/**
|
||||
* Flag to indicate that user actions 'bundle' process is started and in progress (`true`),
|
||||
* otherwise it's `false`
|
||||
*/
|
||||
public shouldBundleActions?: boolean;
|
||||
|
||||
/**
|
||||
* Indicates the actionNum of the previously applied action
|
||||
* to which the first action in actions should be linked.
|
||||
* Linked actions appear as one action and can be undone/redone in a single step.
|
||||
*/
|
||||
public linkId?: number;
|
||||
|
||||
constructor(
|
||||
public readonly activeDoc: ActiveDoc,
|
||||
public readonly client: Client,
|
||||
public readonly fd: number,
|
||||
public readonly authorizer: Authorizer
|
||||
) {}
|
||||
|
||||
// Browser settings (like timezone) obtained from the Client.
|
||||
public get browserSettings(): BrowserSettings { return this.client.browserSettings; }
|
||||
}
|
||||
Reference in New Issue
Block a user