Added docs, properties to Shard, small typos
[ci skip]
This commit is contained in:
parent
fca76754f0
commit
1d0fb1141b
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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":
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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>;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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];
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue