sort the timlines i guess

This commit is contained in:
zoe 2022-08-01 12:01:19 +02:00
parent e1af1295e7
commit ea61556f38
2 changed files with 19 additions and 9 deletions

View File

@ -11,7 +11,7 @@ class TimelinePartModel {
enum Visibility { public, unlisted, private, direct }
class PostModel {
class PostModel implements Comparable {
late String id;
late String uri;
late String content;
@ -34,6 +34,11 @@ class PostModel {
reblogged = json["reblogged"] as bool;
}
@override
int compareTo(dynamic b) {
return id.compareTo(b.id);
}
Future<ThreadModel> getThread() async {
final token = await settings.loadToken();
final baseUrl = await settings.loadInstanceUrl();
@ -66,28 +71,32 @@ class PostModel {
class ThreadModel {
late List<PostModel> posts;
ThreadModel(List<PostModel> allPosts) {
allPosts.sort();
posts = allPosts;
}
}
Future<ThreadModel> getTimelineFromServer() async {
Future<ThreadModel> getTimelineFromServer(String? olderThan) async {
final token = await settings.loadToken();
Map<String, String> query = {"limit": 1.toString()};
if (olderThan != null) {
query.addAll({"max_id": olderThan});
}
final baseUrl = await settings.loadInstanceUrl();
final url = Uri(
scheme: "https",
host: baseUrl,
path: "/api/v1/timelines/home",
queryParameters: {"limit": 1.toString()},
queryParameters: query,
);
Map<String, String> headers = {"Authorization": "Bearer $token"};
headers.addAll(global.defaultHeaders);
final response = await http.get(url, headers: headers);
final List<dynamic> json = jsonDecode(response.body);
List<String> ids = [];
ids.add(json[0]["id"]);
final post = PostModel.fromJson(json[0]);
return await post.getThread();

View File

@ -5,12 +5,12 @@ import '../../business_logic/timeline/timeline.dart' as tl;
class Timeline extends StatefulWidget {
const Timeline({Key? key}) : super(key: key);
@override
State<Timeline> createState() => _TimelineState();
}
class _TimelineState extends State<Timeline> {
String? id;
final controller = ScrollController();
List<Widget> children = [];
bool loading = false;
@ -30,7 +30,8 @@ class _TimelineState extends State<Timeline> {
Future fetchMore() async {
loading = true;
final model = await tl.getTimelineFromServer();
final model = await tl.getTimelineFromServer(id);
id = model.posts[model.posts.length - 1].id;
setState(() {
if (children.isNotEmpty) {