-
-
Notifications
You must be signed in to change notification settings - Fork 162
/
Copy pathmain.js
109 lines (88 loc) · 3.44 KB
/
main.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
const Dialog = require('./src/views/integrate-dialog');
const ResultDialog = require('./src/views/result-dialog');
const ChangeDialog = require('./src/views/change-dialog');
const NodeUtils = require('./src/utils/node-utils');
const IOUtils = require('./src/utils/io-utils');
const Network = require('./src/network/network');
const ConfigDialog = require('./src/views/config-dialog');
const Export = require('./src/export');
const configDialog = new ConfigDialog();
var resources;
var settings;
var interestedResources;
const network = new Network();
const resExport = new Export();
const ioUtil = new IOUtils();
async function doIntegrate(selection, root) {
// 1. Show dialog and get settings
settings = await new Dialog().show();
if (!settings.serverAddress) return;
interestedResources = { color: settings.color, localization: settings.localization, image: settings.image, appicon: settings.appicon };
// 2. Collect resources based on settings
const nodeUtil = new NodeUtils(selection, root);
resources = nodeUtil.getProperties(settings.export == "root", interestedResources);
// 3. Write images into temporary directory and read them back
const images = await ioUtil.write(resources.image);
resources.image.length = 0;
if (images !== undefined)
images.forEach(image => {
if (image.name !== "App icon single" && image.name !== "App icon background" && image.name !== "App icon foreground") resources.image.push(image);
else if (interestedResources.appicon) resources.appicon.push(image);
});
// 4. Get available resources
await network.info(settings.projectToken, settings.serverAddress, projectInfo);
}
async function doExport(versions) {
const preview = resExport.preview(resources, versions);
network.preview(settings.projectToken, settings.serverAddress, preview, previewListener, versions);
}
var projectInfo = {
onSuccess: async function (info) {
const versions = await configDialog.show(info, loadVersion, interestedResources);
if (versions === undefined) return;
doExport(versions)
},
onError: async function (error) {
await new ResultDialog().show("error", error);
}
}
var loadVersion = {
version: async function (version) {
network.config(settings.projectToken, settings.serverAddress, version, versionListener);
}
}
var versionListener = {
onSuccess: async function (languages) {
if(interestedResources.localization)
configDialog.updateLanguages(languages)
},
onError: async function (error) {
await new ResultDialog().show("error", error);
}
}
var previewListener = {
onSuccess: async function (previewConfig) {
const status = resExport.parsePreviewResponse(previewConfig.data)
const stateDialog = await new ChangeDialog().show(status, interestedResources);
if (stateDialog !== "OK") return;
const exportable = resExport.export(resources, previewConfig.extras, status);
network.export(settings.projectToken, settings.serverAddress, exportable, exportListener);
},
onError: async function (error) {
await new ResultDialog().show("error", error);
}
}
var exportListener = {
onSuccess: async function (response) {
console.log("itt1")
await new ResultDialog().show(response);
},
onError: async function (error) {
await new ResultDialog().show("error", error);
}
}
module.exports = {
commands: {
respresso: doIntegrate,
}
};