getEditedMessageDraft method
Implementation
Future<RCIMIWEditedMessageDraft?> getEditedMessageDraft() async {
if (!_canUseMessageEditDrafts) return null;
final targetEngine = _sessionEngine;
if (targetEngine == null) return null;
final completer = Completer<RCIMIWEditedMessageDraft?>();
bool completed = false;
void complete(RCIMIWEditedMessageDraft? draft) {
if (completed) return;
completed = true;
completer.complete(draft);
}
final timeoutTimer = Timer(
const Duration(seconds: 5),
() => complete(null),
);
unawaited(() async {
try {
final code = await targetEngine.getEditedMessageDraft(
_con.conversationType ?? RCIMIWConversationType.invalid,
_con.targetId ?? '',
_con.channelId,
callback: IRCIMIWGetEditedMessageDraftCallback(
onSuccess: complete,
onError: (_) => complete(null),
),
);
if (code != 0) complete(null);
} catch (_) {
complete(null);
}
}());
final draft = await completer.future;
timeoutTimer.cancel();
if (_disposed || !_isSessionEngineCurrent(targetEngine)) return null;
return draft;
}