mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +00:00 
			
		
		
		
	Get latest posts from server
This commit is contained in:
		@@ -1,3 +1,10 @@
 | 
			
		||||
import 'package:comunic/helpers/posts_helper.dart';
 | 
			
		||||
import 'package:comunic/helpers/users_helper.dart';
 | 
			
		||||
import 'package:comunic/lists/posts_list.dart';
 | 
			
		||||
import 'package:comunic/lists/users_list.dart';
 | 
			
		||||
import 'package:comunic/ui/screens/conversation_screen.dart';
 | 
			
		||||
import 'package:comunic/ui/tiles/post_tile.dart';
 | 
			
		||||
import 'package:comunic/utils/intl_utils.dart';
 | 
			
		||||
import 'package:comunic/utils/ui_utils.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
 | 
			
		||||
@@ -11,10 +18,59 @@ class NewestPostsScreen extends StatefulWidget {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class _NewestPostsScreenState extends State<NewestPostsScreen> {
 | 
			
		||||
  // Helpers
 | 
			
		||||
  final PostsHelper _postsHelper = PostsHelper();
 | 
			
		||||
  final UsersHelper _usersHelper = UsersHelper();
 | 
			
		||||
 | 
			
		||||
  // Class members
 | 
			
		||||
  PostsList _list;
 | 
			
		||||
  UsersList _users;
 | 
			
		||||
  ErrorLevel _error = ErrorLevel.NONE;
 | 
			
		||||
 | 
			
		||||
  set error(ErrorLevel err) => setState(() => _error = err);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  void didChangeDependencies() {
 | 
			
		||||
    super.didChangeDependencies();
 | 
			
		||||
    _loadPostsList();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  void _loadError() =>
 | 
			
		||||
      error = _list == null ? ErrorLevel.MAJOR : ErrorLevel.MINOR;
 | 
			
		||||
 | 
			
		||||
  Future<void> _loadPostsList() async {
 | 
			
		||||
    final list = await _postsHelper.getLatest();
 | 
			
		||||
 | 
			
		||||
    if (list == null) return _loadError();
 | 
			
		||||
 | 
			
		||||
    final users = await _usersHelper.getList(list.usersID);
 | 
			
		||||
 | 
			
		||||
    if (users == null) return _loadError();
 | 
			
		||||
 | 
			
		||||
    setState(() {
 | 
			
		||||
      _list = list;
 | 
			
		||||
      _users = users;
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Widget _buildErrorCard() {
 | 
			
		||||
    return buildErrorCard(tr("Could not get the list of posts !"));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Widget _buildListView() {
 | 
			
		||||
    return ListView.builder(
 | 
			
		||||
      itemCount: _list.length,
 | 
			
		||||
      itemBuilder: (c, i) => PostTile(
 | 
			
		||||
            post: _list[i],
 | 
			
		||||
            usersInfo: _users,
 | 
			
		||||
          ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    return buildCenteredProgressBar();
 | 
			
		||||
    if (_error == ErrorLevel.MAJOR) return _buildErrorCard();
 | 
			
		||||
    if (_list == null) return buildCenteredProgressBar();
 | 
			
		||||
    return _buildListView();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								lib/ui/tiles/post_tile.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								lib/ui/tiles/post_tile.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
import 'package:comunic/lists/users_list.dart';
 | 
			
		||||
import 'package:comunic/models/post.dart';
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
 | 
			
		||||
/// Single posts tile
 | 
			
		||||
///
 | 
			
		||||
/// @author Pierre HUBERT
 | 
			
		||||
 | 
			
		||||
class PostTile extends StatelessWidget {
 | 
			
		||||
  final Post post;
 | 
			
		||||
  final UsersList usersInfo;
 | 
			
		||||
 | 
			
		||||
  const PostTile({
 | 
			
		||||
    Key key,
 | 
			
		||||
    @required this.post,
 | 
			
		||||
    @required this.usersInfo,
 | 
			
		||||
  })  : assert(post != null),
 | 
			
		||||
        assert(usersInfo != null),
 | 
			
		||||
        super(key: key);
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Widget build(BuildContext context) {
 | 
			
		||||
    return ListTile(
 | 
			
		||||
      leading: Text("a post"),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user