fetchLanguagesViaSocket function
Future<List<LanguageOption> >
fetchLanguagesViaSocket(
- Socket socket, {
- String displayLocale = 'en',
Fetch supported languages via socket
Implementation
Future<List<LanguageOption>> fetchLanguagesViaSocket(
io.Socket socket, {
String displayLocale = 'en',
}) async {
final completer = Completer<List<LanguageOption>>();
final timeout = Timer(const Duration(seconds: 5), () {
if (!completer.isCompleted) {
completer.complete(getSupportedLanguages(displayLocale: displayLocale));
}
});
socket.emitWithAck('translation:getLanguages', {
'displayLocale': displayLocale,
}, ack: (response) {
timeout.cancel();
if (!completer.isCompleted) {
if (response is Map<String, dynamic> && response['languages'] is List) {
final languages = (response['languages'] as List)
.map((l) => LanguageOption.fromMap(l as Map<String, dynamic>))
.toList();
completer.complete(languages);
} else {
completer.complete(getSupportedLanguages(displayLocale: displayLocale));
}
}
});
return completer.future;
}