aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvellichora <fangrui_tong@brown.edu>2020-02-09 17:43:54 -0500
committervellichora <fangrui_tong@brown.edu>2020-02-09 17:43:54 -0500
commitbede55e2f8504a4b45c3adb96d6ba2d13c17b96f (patch)
tree50c164fd92ebd73d4f66d2024a0e7695a32bf588 /src
parente8fcbbf57b2a2f443d9c280ce10558cf9d51c632 (diff)
option to upload as collection for mobile
Diffstat (limited to 'src')
-rw-r--r--src/mobile/MobileInkOverlay.tsx15
-rw-r--r--src/mobile/MobileInterface.tsx8
-rw-r--r--src/server/Message.ts1
3 files changed, 17 insertions, 7 deletions
diff --git a/src/mobile/MobileInkOverlay.tsx b/src/mobile/MobileInkOverlay.tsx
index ed4cca5b9..9f810424a 100644
--- a/src/mobile/MobileInkOverlay.tsx
+++ b/src/mobile/MobileInkOverlay.tsx
@@ -4,10 +4,11 @@ import { MobileInkOverlayContent, GestureContent, UpdateMobileInkOverlayPosition
import { observable, action } from "mobx";
import { GestureUtils } from "../pen-gestures/GestureUtils";
import "./MobileInkOverlay.scss";
-import { StrCast } from '../new_fields/Types';
+import { StrCast, Cast } from '../new_fields/Types';
import { DragManager } from "../client/util/DragManager";
import { DocServer } from '../client/DocServer';
-import { Doc } from '../new_fields/Doc';
+import { Doc, DocListCastAsync } from '../new_fields/Doc';
+import { listSpec } from '../new_fields/Schema';
@observer
@@ -87,7 +88,7 @@ export default class MobileInkOverlay extends React.Component {
}
uploadDocument = async (content: MobileDocumentUploadContent) => {
- const { docId } = content;
+ const { docId, asCollection } = content;
console.log("receive upload document id", docId);
const doc = await DocServer.GetRefField(docId);
@@ -97,7 +98,13 @@ export default class MobileInkOverlay extends React.Component {
const target = document.elementFromPoint(this._x + 10, this._y + 10);
console.log("the target is", target);
- const dragData = new DragManager.DocumentDragData([doc]);
+ let uploadDocs = [doc];
+ if (!asCollection) {
+ const children = await DocListCastAsync(doc.data);
+ console.log("uploading children", children);
+ uploadDocs = children ? children : [];
+ }
+ const dragData = new DragManager.DocumentDragData(uploadDocs);
const complete = new DragManager.DragCompleteEvent(false, dragData);
console.log("the drag data is", dragData);
diff --git a/src/mobile/MobileInterface.tsx b/src/mobile/MobileInterface.tsx
index a1ef0a5d1..e21258c62 100644
--- a/src/mobile/MobileInterface.tsx
+++ b/src/mobile/MobileInterface.tsx
@@ -203,7 +203,7 @@ export default class MobileInterface extends React.Component {
}
}
- upload = async (e: React.MouseEvent) => {
+ upload = async (e: React.MouseEvent, asCollection: boolean) => {
if (this.mainContainer) {
const data = Cast(this.mainContainer.data, listSpec(Doc));
if (data) {
@@ -212,7 +212,8 @@ export default class MobileInterface extends React.Component {
console.log("UPLOADING DOCUMENT FROM MOBILE", uploadDoc[Id], StrCast(uploadDoc.proto!.title));
if (uploadDoc) {
DocServer.Mobile.dispatchMobileDocumentUpload({
- docId: uploadDoc[Id]
+ docId: uploadDoc[Id],
+ asCollection: asCollection
});
}
}
@@ -230,7 +231,8 @@ export default class MobileInterface extends React.Component {
<button className="mobileInterface-button cancel" onClick={this.onBack} title="Back">BACK</button>
</div>
<div className="uploadSettings">
- <button className="mobileInterface-button" onClick={this.upload} title="Shift left">UPLOAD</button>
+ <button className="mobileInterface-button" onClick={e => this.upload(e, false)} title="Upload">UPLOAD</button>
+ <button className="mobileInterface-button" onClick={e => this.upload(e, true)} title="Upload">UPLOAD AS COLLECTION</button>
</div>
</div>
<DocumentView
diff --git a/src/server/Message.ts b/src/server/Message.ts
index c23a2f0a8..6dac37a46 100644
--- a/src/server/Message.ts
+++ b/src/server/Message.ts
@@ -65,6 +65,7 @@ export interface UpdateMobileInkOverlayPositionContent {
export interface MobileDocumentUploadContent {
readonly docId: string;
+ readonly asCollection: boolean;
}
export namespace MessageStore {