From 6da3342f22f95140ed2220391b1597280dc3bf42 Mon Sep 17 00:00:00 2001 From: "Alexander \"PapaTutuWawa" Date: Fri, 27 Jan 2023 21:54:16 +0100 Subject: [PATCH] feat: Make defining managers better --- packages/moxxmpp/lib/src/connection.dart | 7 ++- packages/moxxmpp/lib/src/managers/base.dart | 12 +++--- packages/moxxmpp/lib/src/message.dart | 6 +-- packages/moxxmpp/lib/src/ping.dart | 6 +-- packages/moxxmpp/lib/src/presence.dart | 8 +--- packages/moxxmpp/lib/src/roster/roster.dart | 8 +--- .../staging/file_upload_notification.dart | 8 +--- .../lib/src/xeps/xep_0030/xep_0030.dart | 8 +--- packages/moxxmpp/lib/src/xeps/xep_0054.dart | 10 +---- .../lib/src/xeps/xep_0060/xep_0060.dart | 6 +-- packages/moxxmpp/lib/src/xeps/xep_0066.dart | 7 +-- packages/moxxmpp/lib/src/xeps/xep_0084.dart | 10 ++--- packages/moxxmpp/lib/src/xeps/xep_0085.dart | 8 +--- packages/moxxmpp/lib/src/xeps/xep_0115.dart | 12 +----- packages/moxxmpp/lib/src/xeps/xep_0184.dart | 8 +--- packages/moxxmpp/lib/src/xeps/xep_0191.dart | 12 ++---- .../lib/src/xeps/xep_0198/xep_0198.dart | 43 ++++++++----------- packages/moxxmpp/lib/src/xeps/xep_0203.dart | 6 +-- packages/moxxmpp/lib/src/xeps/xep_0280.dart | 8 +--- packages/moxxmpp/lib/src/xeps/xep_0300.dart | 8 +--- packages/moxxmpp/lib/src/xeps/xep_0308.dart | 6 +-- packages/moxxmpp/lib/src/xeps/xep_0333.dart | 6 +-- packages/moxxmpp/lib/src/xeps/xep_0352.dart | 14 ++---- packages/moxxmpp/lib/src/xeps/xep_0359.dart | 7 +-- .../lib/src/xeps/xep_0363/xep_0363.dart | 16 ++++--- packages/moxxmpp/lib/src/xeps/xep_0380.dart | 12 +----- .../lib/src/xeps/xep_0384/xep_0384.dart | 7 +-- packages/moxxmpp/lib/src/xeps/xep_0385.dart | 7 +-- packages/moxxmpp/lib/src/xeps/xep_0424.dart | 6 +-- packages/moxxmpp/lib/src/xeps/xep_0444.dart | 8 +--- packages/moxxmpp/lib/src/xeps/xep_0447.dart | 6 +-- packages/moxxmpp/lib/src/xeps/xep_0449.dart | 6 +-- packages/moxxmpp/lib/src/xeps/xep_0461.dart | 6 +-- packages/moxxmpp/test/xeps/xep_0030_test.dart | 1 + 34 files changed, 85 insertions(+), 224 deletions(-) diff --git a/packages/moxxmpp/lib/src/connection.dart b/packages/moxxmpp/lib/src/connection.dart index 238171d..3473d35 100644 --- a/packages/moxxmpp/lib/src/connection.dart +++ b/packages/moxxmpp/lib/src/connection.dart @@ -226,7 +226,7 @@ class XmppConnection { /// Registers a list of [XmppManagerBase] sub-classes as managers on this connection. Future registerManagers(List managers) async { for (final manager in managers) { - _log.finest('Registering ${manager.getId()}'); + _log.finest('Registering ${manager.id}'); manager.register( XmppManagerAttributes( sendStanza: sendStanza, @@ -242,8 +242,7 @@ class XmppConnection { ), ); - final id = manager.getId(); - _xmppManagers[id] = manager; + _xmppManagers[manager.id] = manager; _incomingStanzaHandlers.addAll(manager.getIncomingStanzaHandlers()); _incomingPreStanzaHandlers.addAll(manager.getIncomingPreStanzaHandlers()); @@ -260,7 +259,7 @@ class XmppConnection { // Run the post register callbacks for (final manager in _xmppManagers.values) { if (!manager.initialized) { - _log.finest('Running post-registration callback for ${manager.getName()}'); + _log.finest('Running post-registration callback for ${manager.name}'); await manager.postRegisterCallback(); } } diff --git a/packages/moxxmpp/lib/src/managers/base.dart b/packages/moxxmpp/lib/src/managers/base.dart index 08800ec..30b74b4 100644 --- a/packages/moxxmpp/lib/src/managers/base.dart +++ b/packages/moxxmpp/lib/src/managers/base.dart @@ -10,6 +10,8 @@ import 'package:moxxmpp/src/xeps/xep_0030/types.dart'; import 'package:moxxmpp/src/xeps/xep_0030/xep_0030.dart'; abstract class XmppManagerBase { + XmppManagerBase(this.id); + late final XmppManagerAttributes _managerAttributes; late final Logger _log; @@ -19,7 +21,7 @@ abstract class XmppManagerBase { /// Registers the callbacks from XmppConnection with the manager void register(XmppManagerAttributes attributes) { _managerAttributes = attributes; - _log = Logger(getName()); + _log = Logger(name); } /// Returns the attributes that are registered with the manager. @@ -60,11 +62,11 @@ abstract class XmppManagerBase { List getDiscoIdentities() => []; /// Return the Id (akin to xmlns) of this manager. - String getId(); - - /// Return a name that will be used for logging. - String getName(); + final String id; + /// The name of the manager. + String get name => toString(); + /// Return the logger for this manager. Logger get logger => _log; diff --git a/packages/moxxmpp/lib/src/message.dart b/packages/moxxmpp/lib/src/message.dart index 2ad68e6..e4ec0c8 100644 --- a/packages/moxxmpp/lib/src/message.dart +++ b/packages/moxxmpp/lib/src/message.dart @@ -76,11 +76,7 @@ class MessageDetails { } class MessageManager extends XmppManagerBase { - @override - String getId() => messageManager; - - @override - String getName() => 'MessageManager'; + MessageManager() : super(messageManager); @override List getIncomingStanzaHandlers() => [ diff --git a/packages/moxxmpp/lib/src/ping.dart b/packages/moxxmpp/lib/src/ping.dart index 4a46fb3..edc103f 100644 --- a/packages/moxxmpp/lib/src/ping.dart +++ b/packages/moxxmpp/lib/src/ping.dart @@ -4,11 +4,7 @@ import 'package:moxxmpp/src/managers/namespaces.dart'; import 'package:moxxmpp/src/xeps/xep_0198/xep_0198.dart'; class PingManager extends XmppManagerBase { - @override - String getId() => pingManager; - - @override - String getName() => 'PingManager'; + PingManager() : super(pingManager); @override Future isSupported() async => true; diff --git a/packages/moxxmpp/lib/src/presence.dart b/packages/moxxmpp/lib/src/presence.dart index 3f4cb49..d878f0e 100644 --- a/packages/moxxmpp/lib/src/presence.dart +++ b/packages/moxxmpp/lib/src/presence.dart @@ -17,16 +17,10 @@ typedef PresencePreSendCallback = Future> Function(); /// A mandatory manager that handles initial presence sending, sending of subscription /// request management requests and triggers events for incoming presence stanzas. class PresenceManager extends XmppManagerBase { - PresenceManager() : super(); + PresenceManager() : super(presenceManager); /// The list of pre-send callbacks. final List _presenceCallbacks = List.empty(growable: true); - - @override - String getId() => presenceManager; - - @override - String getName() => 'PresenceManager'; @override List getIncomingStanzaHandlers() => [ diff --git a/packages/moxxmpp/lib/src/roster/roster.dart b/packages/moxxmpp/lib/src/roster/roster.dart index e804a0f..0313c08 100644 --- a/packages/moxxmpp/lib/src/roster/roster.dart +++ b/packages/moxxmpp/lib/src/roster/roster.dart @@ -93,7 +93,7 @@ class RosterFeatureNegotiator extends XmppFeatureNegotiatorBase { /// This manager requires a RosterFeatureNegotiator to be registered. class RosterManager extends XmppManagerBase { - RosterManager(this._stateManager) : super(); + RosterManager(this._stateManager) : super(rosterManager); /// The class managing the entire roster state. final BaseRosterStateManager _stateManager; @@ -104,12 +104,6 @@ class RosterManager extends XmppManagerBase { _stateManager.register(attributes.sendEvent); } - @override - String getId() => rosterManager; - - @override - String getName() => 'RosterManager'; - @override List getIncomingStanzaHandlers() => [ StanzaHandler( diff --git a/packages/moxxmpp/lib/src/xeps/staging/file_upload_notification.dart b/packages/moxxmpp/lib/src/xeps/staging/file_upload_notification.dart index af3f564..d0a802a 100644 --- a/packages/moxxmpp/lib/src/xeps/staging/file_upload_notification.dart +++ b/packages/moxxmpp/lib/src/xeps/staging/file_upload_notification.dart @@ -11,13 +11,7 @@ import 'package:moxxmpp/src/xeps/xep_0446.dart'; const fileUploadNotificationXmlns = 'proto:urn:xmpp:fun:0'; class FileUploadNotificationManager extends XmppManagerBase { - FileUploadNotificationManager() : super(); - - @override - String getId() => fileUploadNotificationManager; - - @override - String getName() => 'FileUploadNotificationManager'; + FileUploadNotificationManager() : super(fileUploadNotificationManager); @override List getIncomingStanzaHandlers() => [ diff --git a/packages/moxxmpp/lib/src/xeps/xep_0030/xep_0030.dart b/packages/moxxmpp/lib/src/xeps/xep_0030/xep_0030.dart index e8405ac..029a59f 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0030/xep_0030.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0030/xep_0030.dart @@ -33,7 +33,7 @@ class DiscoManager extends XmppManagerBase { /// to a disco#info response. DiscoManager(List identities) : _identities = List.from(identities), - super(); + super(discoManager); /// Our features final List _features = List.empty(growable: true); @@ -90,12 +90,6 @@ class DiscoManager extends XmppManagerBase { ), ]; - @override - String getId() => discoManager; - - @override - String getName() => 'DiscoManager'; - @override List getDiscoFeatures() => [ discoInfoXmlns, discoItemsXmlns ]; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0054.dart b/packages/moxxmpp/lib/src/xeps/xep_0054.dart index 464c2dc..e67d7f5 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0054.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0054.dart @@ -28,15 +28,9 @@ class VCard { } class VCardManager extends XmppManagerBase { - VCardManager() : _lastHash = {}, super(); - final Map _lastHash; + VCardManager() : super(vcardManager); + final Map _lastHash = {}; - @override - String getId() => vcardManager; - - @override - String getName() => 'vCardManager'; - @override List getIncomingStanzaHandlers() => [ StanzaHandler( diff --git a/packages/moxxmpp/lib/src/xeps/xep_0060/xep_0060.dart b/packages/moxxmpp/lib/src/xeps/xep_0060/xep_0060.dart index 49f8f0b..97af503 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0060/xep_0060.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0060/xep_0060.dart @@ -69,11 +69,7 @@ class PubSubItem { } class PubSubManager extends XmppManagerBase { - @override - String getId() => pubsubManager; - - @override - String getName() => 'PubsubManager'; + PubSubManager() : super(pubsubManager); @override List getIncomingStanzaHandlers() => [ diff --git a/packages/moxxmpp/lib/src/xeps/xep_0066.dart b/packages/moxxmpp/lib/src/xeps/xep_0066.dart index 7c9d283..bca9f3b 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0066.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0066.dart @@ -8,7 +8,6 @@ import 'package:moxxmpp/src/stringxml.dart'; /// A data class representing the jabber:x:oob tag. class OOBData { - const OOBData({ this.url, this.desc }); final String? url; final String? desc; @@ -32,11 +31,7 @@ XMLNode constructOOBNode(OOBData data) { } class OOBManager extends XmppManagerBase { - @override - String getName() => 'OOBName'; - - @override - String getId() => oobManager; + OOBManager() : super(oobManager); @override List getDiscoFeatures() => [ oobDataXmlns ]; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0084.dart b/packages/moxxmpp/lib/src/xeps/xep_0084.dart index b1f566d..39c84c2 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0084.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0084.dart @@ -28,24 +28,24 @@ class UserAvatarMetadata { this.height, this.mime, ); + /// The amount of bytes in the file final int length; + /// The identifier of the avatar final String id; + /// Image proportions final int width; final int height; + /// The MIME type of the avatar final String mime; } /// NOTE: This class requires a PubSubManager class UserAvatarManager extends XmppManagerBase { - @override - String getId() => userAvatarManager; - - @override - String getName() => 'UserAvatarManager'; + UserAvatarManager() : super(userAvatarManager); PubSubManager _getPubSubManager() => getAttributes().getManagerById(pubsubManager)! as PubSubManager; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0085.dart b/packages/moxxmpp/lib/src/xeps/xep_0085.dart index 9498c00..9bf51de 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0085.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0085.dart @@ -39,15 +39,11 @@ ChatState chatStateFromString(String raw) { String chatStateToString(ChatState state) => state.toString().split('.').last; class ChatStateManager extends XmppManagerBase { + ChatStateManager() : super(chatStateManager); + @override List getDiscoFeatures() => [ chatStateXmlns ]; - @override - String getName() => 'ChatStateManager'; - - @override - String getId() => chatStateManager; - @override List getIncomingStanzaHandlers() => [ StanzaHandler( diff --git a/packages/moxxmpp/lib/src/xeps/xep_0115.dart b/packages/moxxmpp/lib/src/xeps/xep_0115.dart index 6b21d62..2ac3cb6 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0115.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0115.dart @@ -71,7 +71,7 @@ Future calculateCapabilityHash(DiscoInfo info, HashAlgorithm algorithm) /// the DiscoManager. /// NOTE: This manager requires that the DiscoManager is also registered. class EntityCapabilitiesManager extends XmppManagerBase { - EntityCapabilitiesManager(this._capabilityHashBase) : super(); + EntityCapabilitiesManager(this._capabilityHashBase) : super(entityCapabilitiesManager); /// The string that is both the node under which we advertise the disco info /// and the base for the actual node on which we respond to disco#info requests. @@ -80,19 +80,11 @@ class EntityCapabilitiesManager extends XmppManagerBase { /// The cached capability hash. String? _capabilityHash; - @override - String getName() => 'EntityCapabilitiesManager'; - - @override - String getId() => entityCapabilitiesManager; - @override Future isSupported() async => true; @override - List getDiscoFeatures() => [ - capsXmlns, - ]; + List getDiscoFeatures() => [ capsXmlns ]; /// Computes, if required, the capability hash of the data provided by /// the DiscoManager. diff --git a/packages/moxxmpp/lib/src/xeps/xep_0184.dart b/packages/moxxmpp/lib/src/xeps/xep_0184.dart index 81d1727..de55091 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0184.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0184.dart @@ -24,15 +24,11 @@ XMLNode makeMessageDeliveryResponse(String id) { } class MessageDeliveryReceiptManager extends XmppManagerBase { + MessageDeliveryReceiptManager() : super(messageDeliveryReceiptManager); + @override List getDiscoFeatures() => [ deliveryXmlns ]; - @override - String getName() => 'MessageDeliveryReceiptManager'; - - @override - String getId() => messageDeliveryReceiptManager; - @override List getIncomingStanzaHandlers() => [ StanzaHandler( diff --git a/packages/moxxmpp/lib/src/xeps/xep_0191.dart b/packages/moxxmpp/lib/src/xeps/xep_0191.dart index 530e0e8..f73bf14 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0191.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0191.dart @@ -9,16 +9,10 @@ import 'package:moxxmpp/src/stringxml.dart'; import 'package:moxxmpp/src/xeps/xep_0030/xep_0030.dart'; class BlockingManager extends XmppManagerBase { - BlockingManager() : _supported = false, _gotSupported = false, super(); + BlockingManager() : super(blockingManager); - bool _supported; - bool _gotSupported; - - @override - String getId() => blockingManager; - - @override - String getName() => 'BlockingManager'; + bool _supported = false; + bool _gotSupported = false; @override List getIncomingStanzaHandlers() => [ diff --git a/packages/moxxmpp/lib/src/xeps/xep_0198/xep_0198.dart b/packages/moxxmpp/lib/src/xeps/xep_0198/xep_0198.dart index f208001..68d0e6e 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0198/xep_0198.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0198/xep_0198.dart @@ -21,40 +21,41 @@ const xmlUintMax = 4294967296; // 2**32 typedef StanzaAckedCallback = bool Function(Stanza stanza); class StreamManagementManager extends XmppManagerBase { - StreamManagementManager({ this.ackTimeout = const Duration(seconds: 30), - }) - : _state = StreamManagementState(0, 0), - _unackedStanzas = {}, - _stateLock = Lock(), - _streamManagementEnabled = false, - _lastAckTimestamp = -1, - _pendingAcks = 0, - _streamResumed = false, - _ackLock = Lock(); + }) : super(smManager); + /// The queue of stanzas that are not (yet) acked - final Map _unackedStanzas; + final Map _unackedStanzas = {}; + /// Commitable state of the StreamManagementManager - StreamManagementState _state; + StreamManagementState _state = StreamManagementState(0, 0); + /// Mutex lock for _state - final Lock _stateLock; + final Lock _stateLock = Lock(); + /// If the have enabled SM on the stream yet - bool _streamManagementEnabled; + bool _streamManagementEnabled = false; + /// If the current stream has been resumed; - bool _streamResumed; + bool _streamResumed = false; + /// The time in which the response to an ack is still valid. Counts as a timeout /// otherwise @internal final Duration ackTimeout; + /// The time at which the last ack has been sent - int _lastAckTimestamp; + int _lastAckTimestamp = -1; + /// The timer to see if we timed the connection out Timer? _ackTimer; + /// Counts how many acks we're waiting for - int _pendingAcks; + int _pendingAcks = 0; + /// Lock for both [_lastAckTimestamp] and [_pendingAcks]. - final Lock _ackLock; + final Lock _ackLock = Lock(); /// Functions for testing @visibleForTesting @@ -120,12 +121,6 @@ class StreamManagementManager extends XmppManagerBase { StreamManagementState get state => _state; bool get streamResumed => _streamResumed; - - @override - String getId() => smManager; - - @override - String getName() => 'StreamManagementManager'; @override List getNonzaHandlers() => [ diff --git a/packages/moxxmpp/lib/src/xeps/xep_0203.dart b/packages/moxxmpp/lib/src/xeps/xep_0203.dart index 05eec8a..c453da8 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0203.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0203.dart @@ -14,11 +14,7 @@ class DelayedDelivery { } class DelayedDeliveryManager extends XmppManagerBase { - @override - String getId() => delayedDeliveryManager; - - @override - String getName() => 'DelayedDeliveryManager'; + DelayedDeliveryManager() : super(delayedDeliveryManager); @override Future isSupported() async => true; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0280.dart b/packages/moxxmpp/lib/src/xeps/xep_0280.dart index b55e423..e111e29 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0280.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0280.dart @@ -14,7 +14,7 @@ import 'package:moxxmpp/src/xeps/xep_0297.dart'; /// This manager class implements support for XEP-0280. class CarbonsManager extends XmppManagerBase { - CarbonsManager() : super(); + CarbonsManager() : super(carbonsManager); /// Indicates that message carbons are enabled. bool _isEnabled = false; @@ -25,12 +25,6 @@ class CarbonsManager extends XmppManagerBase { /// Indicates that we know that [CarbonsManager._supported] is accurate. bool _gotSupported = false; - @override - String getId() => carbonsManager; - - @override - String getName() => 'CarbonsManager'; - @override List getIncomingPreStanzaHandlers() => [ StanzaHandler( diff --git a/packages/moxxmpp/lib/src/xeps/xep_0300.dart b/packages/moxxmpp/lib/src/xeps/xep_0300.dart index e2e031f..51526fe 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0300.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0300.dart @@ -61,11 +61,7 @@ HashFunction hashFunctionFromName(String name) { } class CryptographicHashManager extends XmppManagerBase { - @override - String getId() => cryptographicHashManager; - - @override - String getName() => 'CryptographicHashManager'; + CryptographicHashManager() : super(cryptographicHashManager); @override Future isSupported() async => true; @@ -81,7 +77,7 @@ class CryptographicHashManager extends XmppManagerBase { ]; static Future> hashFromData(List data, HashFunction function) async { - // TODO(PapaTutuWawa): Implemen the others as well + // TODO(PapaTutuWawa): Implement the others as well HashAlgorithm algo; switch (function) { case HashFunction.sha256: diff --git a/packages/moxxmpp/lib/src/xeps/xep_0308.dart b/packages/moxxmpp/lib/src/xeps/xep_0308.dart index 3418698..e53a1d0 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0308.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0308.dart @@ -17,11 +17,7 @@ XMLNode makeLastMessageCorrectionEdit(String id) { } class LastMessageCorrectionManager extends XmppManagerBase { - @override - String getName() => 'LastMessageCorrectionManager'; - - @override - String getId() => lastMessageCorrectionManager; + LastMessageCorrectionManager() : super(lastMessageCorrectionManager); @override List getDiscoFeatures() => [ lmcXmlns ]; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0333.dart b/packages/moxxmpp/lib/src/xeps/xep_0333.dart index ecec5f3..de269cb 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0333.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0333.dart @@ -25,11 +25,7 @@ XMLNode makeChatMarker(String tag, String id) { } class ChatMarkerManager extends XmppManagerBase { - @override - String getName() => 'ChatMarkerManager'; - - @override - String getId() => chatMarkerManager; + ChatMarkerManager() : super(chatMarkerManager); @override List getDiscoFeatures() => [ chatMarkersXmlns ]; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0352.dart b/packages/moxxmpp/lib/src/xeps/xep_0352.dart index da81c28..7dc6833 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0352.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0352.dart @@ -26,10 +26,10 @@ class CSIInactiveNonza extends XMLNode { /// A Stub negotiator that is just for "intercepting" the stream feature. class CSINegotiator extends XmppFeatureNegotiatorBase { - CSINegotiator() : _supported = false, super(11, false, csiXmlns, csiNegotiator); + CSINegotiator() : super(11, false, csiXmlns, csiNegotiator); /// True if CSI is supported. False otherwise. - bool _supported; + bool _supported = false; bool get isSupported => _supported; @override @@ -50,15 +50,9 @@ class CSINegotiator extends XmppFeatureNegotiatorBase { /// The manager requires a CSINegotiator to be registered as a feature negotiator. class CSIManager extends XmppManagerBase { + CSIManager() : super(csiManager); - CSIManager() : _isActive = true, super(); - bool _isActive; - - @override - String getId() => csiManager; - - @override - String getName() => 'CSIManager'; + bool _isActive = true; @override Future isSupported() async { diff --git a/packages/moxxmpp/lib/src/xeps/xep_0359.dart b/packages/moxxmpp/lib/src/xeps/xep_0359.dart index 8fd3439..b97cd84 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0359.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0359.dart @@ -13,7 +13,6 @@ import 'package:moxxmpp/src/xeps/xep_0030/xep_0030.dart'; /// NOTE: [StableStanzaId.stanzaId] must not be confused with the actual id attribute of /// the message stanza. class StableStanzaId { - const StableStanzaId({ this.originId, this.stanzaId, this.stanzaIdBy }); final String? originId; final String? stanzaId; @@ -29,11 +28,7 @@ XMLNode makeOriginIdElement(String id) { } class StableIdManager extends XmppManagerBase { - @override - String getName() => 'StableIdManager'; - - @override - String getId() => stableIdManager; + StableIdManager() : super(stableIdManager); @override List getDiscoFeatures() => [ stableIdXmlns ]; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0363/xep_0363.dart b/packages/moxxmpp/lib/src/xeps/xep_0363/xep_0363.dart index a03a572..055f630 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0363/xep_0363.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0363/xep_0363.dart @@ -41,17 +41,19 @@ Map prepareHeaders(Map headers) { } class HttpFileUploadManager extends XmppManagerBase { - HttpFileUploadManager() : _gotSupported = false, _supported = false, super(); + HttpFileUploadManager() : super(httpFileUploadManager); + + /// The entity that we will request file uploads from, if discovered. JID? _entityJid; + + /// The maximum file upload file size, if advertised and discovered. int? _maxUploadSize; - bool _gotSupported; - bool _supported; - @override - String getId() => httpFileUploadManager; + /// Flag, if we every tried to discover the upload entity. + bool _gotSupported = false; - @override - String getName() => 'HttpFileUploadManager'; + /// Flag, if we can use HTTP File Upload + bool _supported = false; /// Returns whether the entity provided an identity that tells us that we can ask it /// for an HTTP upload slot. diff --git a/packages/moxxmpp/lib/src/xeps/xep_0380.dart b/packages/moxxmpp/lib/src/xeps/xep_0380.dart index 5c6e113..16236ce 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0380.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0380.dart @@ -53,20 +53,12 @@ XMLNode buildEmeElement(ExplicitEncryptionType type) { } class EmeManager extends XmppManagerBase { - - EmeManager() : super(); - - @override - String getId() => emeManager; - - @override - String getName() => 'EmeManager'; - + EmeManager() : super(emeManager); @override Future isSupported() async => true; @override - List getDiscoFeatures() => [emeXmlns]; + List getDiscoFeatures() => [ emeXmlns ]; @override List getIncomingStanzaHandlers() => [ diff --git a/packages/moxxmpp/lib/src/xeps/xep_0384/xep_0384.dart b/packages/moxxmpp/lib/src/xeps/xep_0384/xep_0384.dart index a34502d..362f570 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0384/xep_0384.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0384/xep_0384.dart @@ -42,12 +42,9 @@ const _doNotEncryptList = [ DoNotEncrypt('stanza-id', stableIdXmlns), ]; +@mustCallSuper abstract class BaseOmemoManager extends XmppManagerBase { - @override - String getId() => omemoManager; - - @override - String getName() => 'OmemoManager'; + BaseOmemoManager() : super(omemoManager); // TODO(Unknown): Technically, this is not always true @override diff --git a/packages/moxxmpp/lib/src/xeps/xep_0385.dart b/packages/moxxmpp/lib/src/xeps/xep_0385.dart index e395189..33ef706 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0385.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0385.dart @@ -8,7 +8,6 @@ import 'package:moxxmpp/src/stringxml.dart'; import 'package:moxxmpp/src/xeps/staging/extensible_file_thumbnails.dart'; class StatelessMediaSharingData { - const StatelessMediaSharingData({ required this.mediaType, required this.size, required this.description, required this.hashes, required this.url, required this.thumbnails }); final String mediaType; final int size; @@ -63,11 +62,7 @@ StatelessMediaSharingData parseSIMSElement(XMLNode node) { } class SIMSManager extends XmppManagerBase { - @override - String getName() => 'SIMSManager'; - - @override - String getId() => simsManager; + SIMSManager() : super(simsManager); @override List getDiscoFeatures() => [ simsXmlns ]; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0424.dart b/packages/moxxmpp/lib/src/xeps/xep_0424.dart index 73dfe99..69f513f 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0424.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0424.dart @@ -12,11 +12,7 @@ class MessageRetractionData { } class MessageRetractionManager extends XmppManagerBase { - @override - String getName() => 'MessageRetractionManager'; - - @override - String getId() => messageRetractionManager; + MessageRetractionManager() : super(messageRetractionManager); @override List getDiscoFeatures() => [ messageRetractionXmlns ]; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0444.dart b/packages/moxxmpp/lib/src/xeps/xep_0444.dart index ac28832..240ea92 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0444.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0444.dart @@ -29,15 +29,11 @@ class MessageReactions { } class MessageReactionsManager extends XmppManagerBase { + MessageReactionsManager() : super(messageReactionsManager); + @override List getDiscoFeatures() => [ messageReactionsXmlns ]; - @override - String getName() => 'MessageReactionsManager'; - - @override - String getId() => messageReactionsManager; - @override List getIncomingStanzaHandlers() => [ StanzaHandler( diff --git a/packages/moxxmpp/lib/src/xeps/xep_0447.dart b/packages/moxxmpp/lib/src/xeps/xep_0447.dart index 0d9996d..31c393d 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0447.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0447.dart @@ -105,11 +105,7 @@ class StatelessFileSharingData { } class SFSManager extends XmppManagerBase { - @override - String getName() => 'SFSManager'; - - @override - String getId() => sfsManager; + SFSManager() : super(sfsManager); @override List getIncomingStanzaHandlers() => [ diff --git a/packages/moxxmpp/lib/src/xeps/xep_0449.dart b/packages/moxxmpp/lib/src/xeps/xep_0449.dart index a46db45..a90754e 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0449.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0449.dart @@ -225,11 +225,7 @@ class StickerPack { } class StickersManager extends XmppManagerBase { - @override - String getId() => stickersManager; - - @override - String getName() => 'StickersManager'; + StickersManager() : super(stickersManager); @override Future isSupported() async => true; diff --git a/packages/moxxmpp/lib/src/xeps/xep_0461.dart b/packages/moxxmpp/lib/src/xeps/xep_0461.dart index 494781d..ce4cc97 100644 --- a/packages/moxxmpp/lib/src/xeps/xep_0461.dart +++ b/packages/moxxmpp/lib/src/xeps/xep_0461.dart @@ -66,11 +66,7 @@ class QuoteData { /// A manager implementing support for parsing XEP-0461 metadata. The /// MessageRepliesManager itself does not modify the body of the message. class MessageRepliesManager extends XmppManagerBase { - @override - String getName() => 'MessageRepliesManager'; - - @override - String getId() => messageRepliesManager; + MessageRepliesManager() : super(messageRepliesManager); @override List getDiscoFeatures() => [ diff --git a/packages/moxxmpp/test/xeps/xep_0030_test.dart b/packages/moxxmpp/test/xeps/xep_0030_test.dart index c34cead..938e32d 100644 --- a/packages/moxxmpp/test/xeps/xep_0030_test.dart +++ b/packages/moxxmpp/test/xeps/xep_0030_test.dart @@ -1,4 +1,5 @@ import 'package:moxxmpp/moxxmpp.dart'; +import 'package:moxxmpp/src/xeps/xep_0030/cache.dart'; import 'package:test/test.dart'; import '../helpers/logging.dart';