Skip to content

Commit 3c1113d

Browse files
authored
Merge pull request #60 from FleekHQ/giancarlo/add-items-stream
Add items stream
2 parents d65f568 + 92c4137 commit 3c1113d

7 files changed

Lines changed: 72 additions & 69 deletions

File tree

public/client/space.proto

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ service SpaceApi {
1212
rpc Subscribe(google.protobuf.Empty) returns (stream FileEventResponse) {}
1313
rpc TxlSubscribe(google.protobuf.Empty) returns (stream TextileEventResponse) {}
1414
rpc OpenFile(OpenFileRequest) returns (OpenFileResponse) {}
15-
rpc AddItems(AddItemsRequest) returns (AddItemsResponse) {}
15+
rpc AddItems(AddItemsRequest) returns (stream AddItemsResponse) {}
1616
rpc CreateFolder(CreateFolderRequest) returns (CreateFolderResponse) {}
1717
}
1818

@@ -80,16 +80,12 @@ message AddItemsRequest {
8080
message AddItemResult {
8181
string sourcePath= 1;
8282
string bucketPath = 2;
83-
}
84-
85-
message AddItemError {
86-
string sourcePath = 1;
87-
string error = 2;
83+
string error = 3;
8884
}
8985

9086
message AddItemsResponse {
91-
repeated AddItemResult results = 1;
92-
repeated AddItemError errors = 2;
87+
AddItemResult result = 1;
88+
uint32 progress = 2;
9389
}
9490

9591
message CreateFolderRequest {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
const { ipcMain } = require('electron');
2+
3+
const client = require('../client');
4+
const { listDirectories } = require('./objects');
5+
6+
const EVENT_PREFIX = 'addItemsSuscribe';
7+
const SUBSCRIBE_START_EVENT = `${EVENT_PREFIX}:start`;
8+
const SUBSCRIBE_ERROR_EVENT = `${EVENT_PREFIX}:error`;
9+
const SUBSCRIBE_SUCCESS_EVENT = `${EVENT_PREFIX}:success`;
10+
11+
const registerAddItemsSubscribe = (mainWindow) => {
12+
let eventStream;
13+
14+
ipcMain.on(SUBSCRIBE_START_EVENT, (event, payload) => {
15+
eventStream = client.AddItems(payload);
16+
17+
eventStream.on('data', (event) => {
18+
mainWindow.webContents.send(SUBSCRIBE_SUCCESS_EVENT, event);
19+
listDirectories(mainWindow);
20+
});
21+
22+
eventStream.on('error', (error) => {
23+
mainWindow.webContents.send(SUBSCRIBE_ERROR_EVENT, error);
24+
});
25+
26+
eventStream.on('end', () => {
27+
eventStream.destroy();
28+
})
29+
});
30+
};
31+
32+
module.exports = registerAddItemsSubscribe;

public/events/add-items.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

public/events/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ const registerConfigEvents = require('./config');
33
const registerPathInfoEvents = require('./path-info');
44
const registerObjectsEvents = require('./objects').default;
55
const registerGenerateKeyPairEvents = require('./generate-key-pair');
6-
const registerAddItemsEvents = require('./add-items');
76
const registerTxlSubscribe = require('./txl-subscribe');
7+
const registerAddItemsSubscribe = require('./add-items-subscribe');
88

99
const registerEvents = (mainWindow) => {
1010
const stream = registerEventStream(mainWindow);
@@ -13,8 +13,8 @@ const registerEvents = (mainWindow) => {
1313
registerConfigEvents(mainWindow);
1414
registerObjectsEvents(mainWindow);
1515
registerPathInfoEvents(mainWindow);
16+
registerAddItemsSubscribe(mainWindow);
1617
registerGenerateKeyPairEvents(mainWindow);
17-
registerAddItemsEvents(mainWindow);
1818

1919
return () => {
2020
stream.destroy();

src/events/add-items-subscribe.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { ipcRenderer } from 'electron';
2+
import { SET_UPLOAD_ERROR_STATE } from '@reducers/storage';
3+
4+
import store from '../store';
5+
6+
const EVENT_PREFIX = 'addItemsSuscribe';
7+
const SUBSCRIBE_START_EVENT = `${EVENT_PREFIX}:start`;
8+
const SUBSCRIBE_ERROR_EVENT = `${EVENT_PREFIX}:error`;
9+
const SUBSCRIBE_SUCCESS_EVENT = `${EVENT_PREFIX}:success`;
10+
11+
const registerAddItemsSubscribeEvents = () => {
12+
ipcRenderer.on(SUBSCRIBE_SUCCESS_EVENT, (event, payload) => {
13+
// eslint-disable-next-line no-console
14+
console.log('upload completed: ', payload);
15+
});
16+
17+
ipcRenderer.on(SUBSCRIBE_ERROR_EVENT, (event, payload) => {
18+
// eslint-disable-next-line no-console
19+
console.error('Error on adding item: ', payload);
20+
store.dispatch({
21+
payload,
22+
type: SET_UPLOAD_ERROR_STATE,
23+
});
24+
});
25+
};
26+
27+
export const addItems = (payload) => {
28+
ipcRenderer.send(SUBSCRIBE_START_EVENT, payload);
29+
};
30+
31+
export default registerAddItemsSubscribeEvents;

src/events/add-items.js

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/events/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import registerConfigEvents from './config';
44
import registerObjectsEvents from './objects';
55
import registerPathInfoEvents from './path-info';
66
import registerGenerateKeyPairEvents from './generate-key-pair';
7-
import registerAddItemsEvents from './add-items';
87
import registerTxlSubscribeEvents from './txl-subscribe';
8+
import registerAddItemsSubscribeEvents from './add-items-subscribe';
99

1010
const registerEvents = () => {
1111
registerShortcuts();
@@ -14,13 +14,13 @@ const registerEvents = () => {
1414
registerObjectsEvents();
1515
registerPathInfoEvents();
1616
registerGenerateKeyPairEvents();
17-
registerAddItemsEvents();
1817
registerTxlSubscribeEvents();
18+
registerAddItemsSubscribeEvents();
1919
};
2020

2121
export default registerEvents;
2222
export * from './config';
2323
export * from './objects';
2424
export * from './path-info';
2525
export * from './generate-key-pair';
26-
export * from './add-items';
26+
export * from './add-items-subscribe';

0 commit comments

Comments
 (0)