Added docs, properties to Shard, small typos

[ci skip]
This commit is contained in:
Szymon Uglis 2020-06-18 14:59:23 +02:00
parent fca76754f0
commit 1d0fb1141b
7 changed files with 28 additions and 13 deletions

View file

@ -6,7 +6,7 @@ abstract class IGuildChannel extends Channel {
/// The channel"s name.
String get name;
/// The channel's position in the channel list.
/// Relative position of channel in context of channel list
int get position;
/// Id of [Guild] that the channel is in.

View file

@ -27,7 +27,10 @@ class MemberChunkEvent {
/// Nonce is used to identify events.
String? nonce;
MemberChunkEvent._new(Map<String, dynamic> raw, Nyxx client) {
/// Id of shard where chunk was received
final int shardId;
MemberChunkEvent._new(Map<String, dynamic> raw, Nyxx client, this.shardId) {
this.chunkIndex = raw["d"]["chunk_index"] as int;
this.chunkCount = raw["d"]["chunk_count"] as int;

View file

@ -5,7 +5,13 @@ class Shard implements Disposable {
final int id;
/// Reference to [ShardManager]
ShardManager manager;
final ShardManager manager;
/// Emitted when the shard encounters a connection error
late final Stream<Shard> onDisconnect = manager.onDisconnect.where((event) => event.id == this);
/// Emitted when shard receives member chunk.
late final Stream<MemberChunkEvent> onMemberChunk = manager.onMemberChunk.where((event) => event.shardId == this.id);
/// List of handled guild ids
final List<Snowflake> guilds = [];
@ -269,7 +275,7 @@ class Shard implements Disposable {
break;
case "GUILD_MEMBERS_CHUNK":
manager._onMemberChunk.add(MemberChunkEvent._new(rawPayload, manager._ws._client));
manager._onMemberChunk.add(MemberChunkEvent._new(rawPayload, manager._ws._client, this.id));
break;
case "MESSAGE_REACTION_REMOVE_ALL":

View file

@ -12,14 +12,14 @@ class ShardManager implements Disposable {
/// Emitted when the shard is ready.
late Stream<Shard> onConnected = this._onConnect.stream;
/// Emitted when the shard encounters an error.
/// Emitted when the shard encounters a connection error.
late Stream<Shard> onDisconnect = this._onDisconnect.stream;
/// Emitted when shard receives member chunk.
late Stream<MemberChunkEvent> onMemberChunk = this._onMemberChunk.stream;
final StreamController<Shard> _onConnect = StreamController<Shard>.broadcast();
final StreamController<Shard> _onDisconnect = StreamController<Shard>.broadcast();
final StreamController<Shard> _onConnect = StreamController.broadcast();
final StreamController<Shard> _onDisconnect = StreamController.broadcast();
final StreamController<MemberChunkEvent> _onMemberChunk = StreamController.broadcast();
final Logger _logger = Logger("Shard Manager");

View file

@ -5,6 +5,9 @@ Map<String, dynamic> _decodeBytes(dynamic rawPayload, ZLibDecoder decoder) {
if (rawPayload is String) {
return jsonDecode(rawPayload) as Map<String, dynamic>;
}
// print("Size: ${(rawPayload as List<int>).length} bytes");
final decoded = decoder.convert(rawPayload as List<int>);
final rawStr = utf8.decode(decoded);
return jsonDecode(rawStr) as Map<String, dynamic>;

View file

@ -1,10 +1,13 @@
part of nyxx;
/// Abstract interface for enums in library
abstract class IEnum<T> {
final T _value;
/// Returns value of enum
T get value => _value;
/// Creates enum with given value
const IEnum(this._value);
@override

View file

@ -37,19 +37,19 @@ class PermissionsUtils {
allowRaw = publicOverride.allow;
denyRaw = publicOverride.deny;
// ignore: avoid_catches_without_on_clauses, empty_catches
} catch (e) {}
} on Error { }
var allowRole = 0;
var denyRole = 0;
for (final role in member.roles) {
try {
final chanOveride = channel.permissionOverrides.firstWhere((f) => f.id == role.id);
final chanOverride = channel.permissionOverrides.firstWhere((f) => f.id == role.id);
denyRole |= chanOveride.deny;
allowRole |= chanOveride.allow;
denyRole |= chanOverride.deny;
allowRole |= chanOverride.allow;
// ignore: avoid_catches_without_on_clauses, empty_catches
} catch (e) {}
} on Error { }
}
allowRaw = (allowRaw & ~denyRole) | allowRole;
@ -62,7 +62,7 @@ class PermissionsUtils {
allowRaw = (allowRaw & ~memberOverride.deny) | memberOverride.allow;
denyRaw = (denyRaw & ~memberOverride.allow) | memberOverride.deny;
// ignore: avoid_catches_without_on_clauses, empty_catches
} catch (e) {}
} on Error { }
return [allowRaw, denyRaw];
}