Skip to content

Commit ceb238c

Browse files
authored
Merge pull request tuanpmt#17 from pellepersson/remove-native-client
Remove native clients
2 parents ed47b3f + 135a7fe commit ceb238c

File tree

3 files changed

+35
-17
lines changed

3 files changed

+35
-17
lines changed

android/src/main/java/com/tuanpm/RCTMqtt/RCTMqttModule.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,12 @@ public void connect(final int clientRef) {
7373
public void disconnect(final int clientRef) {
7474
clients.get(clientRef).disconnect();
7575
}
76-
76+
77+
@ReactMethod
78+
public void removeClient(final int clientRef, Promise promise) {
79+
clients.remove(clientRef);
80+
promise.resolve(clientRef);
81+
}
7782

7883
@ReactMethod
7984
public void subscribe(final int clientRef, final String topic, final int qos) {

index.js

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ module.exports = {
5050
client.dispatchEvent(data);
5151
});
5252
},
53+
setEventHandler: function() {
54+
this.eventHandler = DeviceEventEmitter.addListener("mqtt_events", (data) => this.dispatchEvents(data));
55+
},
5356
createClient: async function(options) {
5457
if(options.uri) {
5558
var pattern = /^((mqtt[s]?|ws[s]?)?:(\/\/)([0-9a-zA-Z_\.]*):?(\d+))$/;
@@ -78,27 +81,27 @@ module.exports = {
7881

7982
/* Listen mqtt event */
8083
if(this.eventHandler === null) {
81-
console.log('add mqtt_events listener')
82-
this.eventHandler = DeviceEventEmitter.addListener(
83-
"mqtt_events",
84-
(data) => this.dispatchEvents(data));
84+
this.setEventHandler();
8585
}
8686
this.clients.push(client);
8787

8888
return client;
8989
},
9090
removeClient: function(client) {
91-
var clientIdx = this.clients.indexOf(client);
92-
93-
/* TODO: destroy client in native module */
94-
95-
if(clientIdx > -1)
96-
this.clients.splice(clientIdx, 1);
97-
98-
if(this.clients.length > 0) {
99-
this.eventHandler.remove();
100-
this.eventHandler = null;
101-
}
91+
Mqtt.removeClient(client.clientRef)
92+
.then(() => {
93+
var clientIdx = this.clients.indexOf(client);
94+
95+
if (clientIdx > -1) {
96+
this.clients.splice(clientIdx, 1);
97+
}
98+
99+
if (this.clients.length > 0) {
100+
if (this.eventHandler !== null) {
101+
this.eventHandler.remove();
102+
this.setEventHandler();
103+
}
104+
}
105+
});
102106
}
103-
104107
};

ios/RCTMqtt/RCTMqtt.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,16 @@ - (void)appDidBecomeActive {
8585
resolve([NSNumber numberWithInt:clientRef]);
8686

8787
}
88+
89+
RCT_EXPORT_METHOD(removeClient:(int) clientRef
90+
resolver:(RCTPromiseResolveBlock)resolve
91+
rejecter:(RCTPromiseRejectBlock)reject) {
92+
93+
[[self clients] removeObjectForKey:[NSNumber numberWithInt:clientRef]];
94+
resolve([NSNumber numberWithInt:clientRef]);
95+
96+
}
97+
8898
RCT_EXPORT_METHOD(connect:(nonnull NSNumber *) clientRef) {
8999

90100
[[[self clients] objectForKey:clientRef] connect];

0 commit comments

Comments
 (0)