This repository has been archived by the owner on Jun 15, 2022. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 110
/
itemActionManager.js
90 lines (70 loc) · 2.49 KB
/
itemActionManager.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import {Platform, Share} from 'react-native';
import ApplicationState from "@Lib/ApplicationState"
import AlertManager from './sfjs/alertManager'
import ModelManager from './sfjs/modelManager'
import Sync from './sfjs/syncManager'
export default class ItemActionManager {
static DeleteEvent = "DeleteEvent";
static PinEvent = "PinEvent";
static UnpinEvent = "UnpinEvent";
static ArchiveEvent = "ArchiveEvent";
static UnarchiveEvent = "UnarchiveEvent";
static LockEvent = "LockEvent";
static UnlockEvent = "UnlockEvent";
static ProtectEvent = "ProtectEvent";
static UnprotectEvent = "UnprotectEvent";
static ShareEvent = "ShareEvent";
/* The afterConfirmCallback is called after user confirms deletion pop up */
static handleEvent(event, item, callback, afterConfirmCallback) {
console.log("Handling event", event);
if(event == this.DeleteEvent) {
var title = `Delete ${item.displayName}`;
var message = `Are you sure you want to delete this ${item.displayName.toLowerCase()}?`;
AlertManager.get().confirm({
title: title,
text: message,
confirmButtonText: "Delete",
onConfirm: () => {
ModelManager.get().setItemToBeDeleted(item);
afterConfirmCallback && afterConfirmCallback();
Sync.get().sync().then(() => {
callback && callback();
});
}
})
}
else if(event == this.PinEvent || event == this.UnpinEvent) {
item.setAppDataItem("pinned", event == this.PinEvent);
item.setDirty(true);
Sync.get().sync();
callback && callback();
}
else if(event == this.LockEvent || event == this.UnlockEvent) {
item.setAppDataItem("locked", event == this.LockEvent);
item.setDirty(true, true);
Sync.get().sync();
callback && callback();
}
else if(event == this.ArchiveEvent || event == this.UnarchiveEvent) {
item.setAppDataItem("archived", event == this.ArchiveEvent);
item.setDirty(true);
Sync.get().sync();
callback && callback();
}
else if(event == this.ProtectEvent || event == this.UnprotectEvent) {
item.content.protected = !item.content.protected;
item.setDirty(true);
Sync.get().sync();
callback && callback();
}
else if(event == this.ShareEvent) {
ApplicationState.get().performActionWithoutStateChangeImpact(() => {
Share.share({
title: item.title,
message: item.text,
})
})
callback && callback();
}
}
}