getAccountPosts method
Future<List<Discussion> >
getAccountPosts(
- String username,
- String by, {
- required int limit,
- String? startAuthor,
- String? startPermlink,
- String? observer,
override
Implementation
@override
Future<List<Discussion>> getAccountPosts(
String username,
String by, {
required int limit,
String? startAuthor,
String? startPermlink,
String? observer,
}) async {
final completer = Completer<List<Discussion>>();
headlessWebView.webViewController?.addJavaScriptHandler(
handlerName: 'getAccountPostsResult',
callback: (args) {
if (!completer.isCompleted) {
var contentData = args.isNotEmpty ? args[0].toString() : null;
if (contentData != null &&
contentData != 'null' &&
contentData.isNotEmpty) {
try {
var posts = Discussion.fromJsonStringList(contentData);
completer.complete(posts);
} catch (e) {
completer.completeError('Failed to parse posts: $e');
}
} else {
completer.completeError(
'Failed to get account posts or empty response',
);
}
}
},
);
await headlessWebView.webViewController?.evaluateJavascript(
source: """
(async () => {
var string = await getAccountPosts(
"${jsonDecode(username)}",
${jsonEncode(by)},
$limit,
${jsonEncode(startAuthor)},
${jsonEncode(startPermlink)},
${jsonEncode(observer)},
);
window.flutter_inappwebview.callHandler('getAccountPostsResult', string);
})()
""",
);
return completer.future;
}