1.1.1
This commit is contained in:
parent
caf3dda1b7
commit
23d0ab2105
5 changed files with 33 additions and 118 deletions
|
@ -1,2 +1,6 @@
|
||||||
|
# 1.1.1
|
||||||
|
* Deprecated `unwrap`.
|
||||||
|
* Service streams now pump out `e.data`, rather than the actual event.
|
||||||
|
|
||||||
# 1.1.0+1
|
# 1.1.0+1
|
||||||
* Added `unwrap`.
|
* Added `unwrap`.
|
20
README.md
20
README.md
|
@ -107,7 +107,7 @@ main() async {
|
||||||
|
|
||||||
var Cars = app.service("api/cars");
|
var Cars = app.service("api/cars");
|
||||||
|
|
||||||
Cars.onCreated.listen((e) => print("New car: ${e.data}"));
|
Cars.onCreated.listen((car) => print("New car: $car"));
|
||||||
|
|
||||||
// Happens asynchronously
|
// Happens asynchronously
|
||||||
Cars.create({"brand": "Toyota"});
|
Cars.create({"brand": "Toyota"});
|
||||||
|
@ -148,10 +148,9 @@ main() async {
|
||||||
|
|
||||||
var Cars = app.service("api/cars", type: Car);
|
var Cars = app.service("api/cars", type: Car);
|
||||||
|
|
||||||
Cars.onCreated.listen((e) {
|
Cars.onCreated.listen((Car car) {
|
||||||
// Automatically deserialized into a car :)
|
// Automatically deserialized into a car :)
|
||||||
Car car = e.data;
|
//
|
||||||
|
|
||||||
// I just bought a new 2016 Toyota Camry!
|
// I just bought a new 2016 Toyota Camry!
|
||||||
print("I just bought a new $car!");
|
print("I just bought a new $car!");
|
||||||
});
|
});
|
||||||
|
@ -161,15 +160,4 @@ main() async {
|
||||||
|
|
||||||
// Authenticate a WebSocket, if you were not already authenticated...
|
// Authenticate a WebSocket, if you were not already authenticated...
|
||||||
app.authenticateViaJwt('<some-jwt>');
|
app.authenticateViaJwt('<some-jwt>');
|
||||||
}
|
}
|
||||||
```
|
|
||||||
**Unwrapping Events**
|
|
||||||
In several cases, it may be cumbersome or inconsistent to handle events
|
|
||||||
as `WebSocketEvent`s. Call `unwrap` to receive a `Service` that returns the underlying `data`
|
|
||||||
objects.
|
|
||||||
|
|
||||||
```dart
|
|
||||||
foo() async {
|
|
||||||
var unwrapped = app.service('api/todos').unwrap();
|
|
||||||
}
|
|
||||||
```
|
|
|
@ -240,39 +240,39 @@ class WebSocketsService extends Service {
|
||||||
|
|
||||||
final StreamController<WebSocketEvent> _onAllEvents =
|
final StreamController<WebSocketEvent> _onAllEvents =
|
||||||
new StreamController<WebSocketEvent>();
|
new StreamController<WebSocketEvent>();
|
||||||
final StreamController<WebSocketEvent> _onIndexed =
|
final StreamController _onIndexed =
|
||||||
new StreamController<WebSocketEvent>();
|
new StreamController();
|
||||||
final StreamController<WebSocketEvent> _onRead =
|
final StreamController _onRead =
|
||||||
new StreamController<WebSocketEvent>();
|
new StreamController();
|
||||||
final StreamController<WebSocketEvent> _onCreated =
|
final StreamController _onCreated =
|
||||||
new StreamController<WebSocketEvent>();
|
new StreamController();
|
||||||
final StreamController<WebSocketEvent> _onModified =
|
final StreamController _onModified =
|
||||||
new StreamController<WebSocketEvent>();
|
new StreamController();
|
||||||
final StreamController<WebSocketEvent> _onUpdated =
|
final StreamController _onUpdated =
|
||||||
new StreamController<WebSocketEvent>();
|
new StreamController();
|
||||||
final StreamController<WebSocketEvent> _onRemoved =
|
final StreamController _onRemoved =
|
||||||
new StreamController<WebSocketEvent>();
|
new StreamController();
|
||||||
|
|
||||||
/// Fired on all events.
|
/// Fired on all events.
|
||||||
Stream<WebSocketEvent> get onAllEvents => _onAllEvents.stream;
|
Stream<WebSocketEvent> get onAllEvents => _onAllEvents.stream;
|
||||||
|
|
||||||
/// Fired on `index` events.
|
/// Fired on `index` events.
|
||||||
Stream<WebSocketEvent> get onIndexed => _onIndexed.stream;
|
Stream get onIndexed => _onIndexed.stream;
|
||||||
|
|
||||||
/// Fired on `read` events.
|
/// Fired on `read` events.
|
||||||
Stream<WebSocketEvent> get onRead => _onRead.stream;
|
Stream get onRead => _onRead.stream;
|
||||||
|
|
||||||
/// Fired on `created` events.
|
/// Fired on `created` events.
|
||||||
Stream<WebSocketEvent> get onCreated => _onCreated.stream;
|
Stream get onCreated => _onCreated.stream;
|
||||||
|
|
||||||
/// Fired on `modified` events.
|
/// Fired on `modified` events.
|
||||||
Stream<WebSocketEvent> get onModified => _onModified.stream;
|
Stream get onModified => _onModified.stream;
|
||||||
|
|
||||||
/// Fired on `updated` events.
|
/// Fired on `updated` events.
|
||||||
Stream<WebSocketEvent> get onUpdated => _onUpdated.stream;
|
Stream get onUpdated => _onUpdated.stream;
|
||||||
|
|
||||||
/// Fired on `removed` events.
|
/// Fired on `removed` events.
|
||||||
Stream<WebSocketEvent> get onRemoved => _onRemoved.stream;
|
Stream get onRemoved => _onRemoved.stream;
|
||||||
|
|
||||||
WebSocketsService(this.socket, this.app, this.path, {this.deserializer}) {
|
WebSocketsService(this.socket, this.app, this.path, {this.deserializer}) {
|
||||||
listen();
|
listen();
|
||||||
|
@ -306,7 +306,7 @@ class WebSocketsService extends Service {
|
||||||
app.onServiceEvent.listen((map) {
|
app.onServiceEvent.listen((map) {
|
||||||
if (map.containsKey(path)) {
|
if (map.containsKey(path)) {
|
||||||
var event = map[path];
|
var event = map[path];
|
||||||
var transformed = transformEvent(event);
|
var transformed = transformEvent(event).data;
|
||||||
|
|
||||||
_onAllEvents.add(event);
|
_onAllEvents.add(event);
|
||||||
|
|
||||||
|
@ -389,8 +389,9 @@ class WebSocketsService extends Service {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns a wrapper that queries this service, but fires the `data` of `WebSocketEvent`s, rather than the events themselves.
|
/// No longer necessary.
|
||||||
Service unwrap() => new _WebSocketsDataService(this);
|
@deprecated
|
||||||
|
Service unwrap() => this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Contains a dynamic Map of [WebSocketEvent] streams.
|
/// Contains a dynamic Map of [WebSocketEvent] streams.
|
||||||
|
@ -410,82 +411,4 @@ class WebSocketExtraneousEventHandler {
|
||||||
|
|
||||||
return _events[index].stream;
|
return _events[index].stream;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _WebSocketsDataService extends Service {
|
|
||||||
final WebSocketsService service;
|
|
||||||
|
|
||||||
Stream _onIndexed, _onRead, _onCreated, _onModified, _onUpdated, _onRemoved;
|
|
||||||
|
|
||||||
_WebSocketsDataService(this.service);
|
|
||||||
|
|
||||||
getData(WebSocketEvent e) => e.data;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future remove(id, [Map params]) {
|
|
||||||
return service.remove(id, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future update(id, data, [Map params]) {
|
|
||||||
return service.update(id, data, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future modify(id, data, [Map params]) {
|
|
||||||
return service.modify(id, data, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future create(data, [Map params]) {
|
|
||||||
return service.create(data, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future read(id, [Map params]) {
|
|
||||||
return service.read(id, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future index([Map params]) {
|
|
||||||
return service.index(params);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Future close() async {}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Angel get app {
|
|
||||||
return service.app;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Stream get onRemoved {
|
|
||||||
return _onRemoved ??= service.onRemoved.map(getData);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Stream get onUpdated {
|
|
||||||
return _onUpdated ??= service.onUpdated.map(getData);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Stream get onModified {
|
|
||||||
return _onModified ??= service.onModified.map(getData);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Stream get onCreated {
|
|
||||||
return _onCreated ??= service.onCreated.map(getData);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Stream get onRead {
|
|
||||||
return _onRead ??= service.onRead.map(getData);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Stream get onIndexed {
|
|
||||||
return _onIndexed ??= service.onIndexed.map(getData);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -2,7 +2,7 @@ name: angel_websocket
|
||||||
description: WebSocket plugin for Angel.
|
description: WebSocket plugin for Angel.
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=1.19.0"
|
sdk: ">=1.19.0"
|
||||||
version: 1.1.0+1
|
version: 1.1.1
|
||||||
author: Tobe O <thosakwe@gmail.com>
|
author: Tobe O <thosakwe@gmail.com>
|
||||||
homepage: https://github.com/angel-dart/angel_websocket
|
homepage: https://github.com/angel-dart/angel_websocket
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
|
@ -21,7 +21,7 @@ class TodoService extends TypedService<Todo> {
|
||||||
}
|
}
|
||||||
|
|
||||||
testIndex(BaseWebSocketClient client) async {
|
testIndex(BaseWebSocketClient client) async {
|
||||||
var Todos = client.service('api/todos').unwrap();
|
var Todos = client.service('api/todos');
|
||||||
Todos.index();
|
Todos.index();
|
||||||
|
|
||||||
var indexed = await Todos.onIndexed.first;
|
var indexed = await Todos.onIndexed.first;
|
||||||
|
|
Loading…
Reference in a new issue