Skip to content

Commit

Permalink
Fixed loading user's profile
Browse files Browse the repository at this point in the history
  • Loading branch information
jumpiniasty committed Jul 13, 2023
1 parent 41f3d14 commit 3388869
Show file tree
Hide file tree
Showing 16 changed files with 50 additions and 55 deletions.
16 changes: 8 additions & 8 deletions lib/controllers/party_creator_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,21 +55,21 @@ class PartyCreatorController {
const storage = FlutterSecureStorage();
final token = await storage.read(key: "access");
final url = "$mainUrl/parties/";
final req = http.MultipartRequest("POST", Uri.parse(url));
final req = http.MultipartRequest(
"POST",
Uri.parse(url),
);
req.headers.addAll({
"Content-Type": "multipart/form-data",
"Authorization": "Bearer $token",
});
req.fields.addAll(<String, String>{
"owner_public_id": party.ownerPublicId!,
"name": party.name,
"privacy_status": party.privacyStatus.toString(),
"description": party.description,
"location": party.location!.toPOINT(),
"start_time": party.startTime.toIso8601String(),
"stop_time": party.stopTime.toIso8601String(),
"participants":
jsonEncode([for (final p in party.participants!) p.toMap()]),
});
req.headers.addAll({
"Content-Type": "multipart/form-data",
"Authorization": "Bearer $token",
});
//FIXME creating party without image
if (party.image != null) {
Expand Down
2 changes: 1 addition & 1 deletion lib/controllers/search_controller.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import 'dart:convert';
import 'package:drinkify/utils/ext.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:http/http.dart' as http;
import 'package:latlong2/latlong.dart';

import '../utils/consts.dart';
import '../models/friend.dart';
import '../models/party.dart';
import '../utils/ext.dart';

///Used for searching parties and users
class SearchController {
Expand Down
2 changes: 1 addition & 1 deletion lib/models/friend.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:drinkify/utils/ext.dart';
import '../utils/ext.dart';

class Friend {
final String? publicId;
Expand Down
2 changes: 1 addition & 1 deletion lib/models/party.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:latlong2/latlong.dart';

import './friend.dart';
import '/utils/ext.dart';
import '../utils/ext.dart';

class Party {
final String? publicId;
Expand Down
8 changes: 2 additions & 6 deletions lib/routes/create_party_page.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:go_router/go_router.dart';
import 'package:image_picker/image_picker.dart';
import 'package:latlong2/latlong.dart';
Expand All @@ -10,6 +9,7 @@ import 'package:location/location.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

import '../utils/theming.dart';
import '../utils/ext.dart';
import '../widgets/custom_floating_button.dart';
import '../routes/create_party_routes/description_page.dart';
import '../widgets/createpartypage/party_status.dart';
Expand All @@ -29,7 +29,7 @@ class CreatePartyRoute extends StatefulWidget {
State<CreatePartyRoute> createState() => _CreatePartyRouteState();
}

class _CreatePartyRouteState extends State<CreatePartyRoute> {
class _CreatePartyRouteState extends State<CreatePartyRoute> with MapUtils {
//List of elements needed to send in the http request
LatLng? selPoint;
XFile? thumbnail;
Expand Down Expand Up @@ -175,18 +175,14 @@ class _CreatePartyRouteState extends State<CreatePartyRoute> {
}
setState(() => errorFields = tempErrorList);
if (errorFields.isNotEmpty && !_wrongDate) return;
const storage = FlutterSecureStorage();
final userId = await storage.read(key: "user_publicId");
final isCreated = await PartyCreatorController.createParty(
Party(
ownerPublicId: userId!,
name: partyTitle,
description: descriptionCtrl.text,
location: selPoint,
startTime: endTime!,
stopTime: endTime!,
privacyStatus: partyStatus,
participants: invitedUsers,
image: thumbnail?.path,
),
);
Expand Down
7 changes: 5 additions & 2 deletions lib/routes/party_info_page.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import 'package:flutter/material.dart';

import 'package:drinkify/models/party.dart';
import '../models/party.dart';

class PartyInfoPage extends StatelessWidget {
final Party party;
const PartyInfoPage(this.party, {super.key});
const PartyInfoPage(
this.party, {
super.key,
});

//TODO finish this page
@override
Expand Down
31 changes: 15 additions & 16 deletions lib/routes/profile_page.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'package:drinkify/controllers/user_controller.dart';
import 'package:drinkify/models/user.dart';
import 'package:flutter/material.dart' hide SearchController;

import '../utils/theming.dart';
import '../widgets/profilepage/user_info.dart';
import '../models/friend.dart';
import 'package:drinkify/controllers/search_controller.dart';
import '../models/user.dart';
import '../controllers/search_controller.dart';
import '../controllers/user_controller.dart';

class ProfilePage extends StatefulWidget {
final Friend? user;
Expand All @@ -19,27 +19,26 @@ class ProfilePage extends StatefulWidget {
}

class _ProfilePageState extends State<ProfilePage> {
late User? user;
late Friend? friend;
User? user;
Friend? friend;

@override
void initState() {
super.initState();
user = User.emptyUser();
friend = const Friend();
WidgetsBinding.instance.addPostFrameCallback((_) async {
if (_isMyProfile) {
final myProfileData = await UserController.me();

if (!mounted) return;
setState(() => user = myProfileData);
return;
}
} else {
final data = await SearchController.searchUserByPublicId(
widget.user!.publicId!,
);

final data = await SearchController.searchUserByPublicId(
widget.user!.publicId!,
);
if (!mounted) return;
setState(() => friend = data);
if (!mounted) return;
setState(() => friend = data);
}
});
}

Expand All @@ -53,8 +52,8 @@ class _ProfilePageState extends State<ProfilePage> {
backgroundColor: Theming.bgColor,
title: Text(
_isMyProfile
? "${user!.firstName} ${user!.lastName}"
: "${friend!.firstName} ${friend!.lastName}",
? "${user?.firstName ?? ""} ${user?.lastName ?? ""}"
: "${friend?.firstName ?? ""} ${friend?.lastName}",
style: const TextStyle(
color: Theming.whiteTone,
fontSize: 18,
Expand Down
4 changes: 2 additions & 2 deletions lib/routes/selected_party_page.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import 'package:drinkify/controllers/party_controller.dart';
import 'package:drinkify/widgets/dialogs/success_sheet.dart';
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong2/latlong.dart';
Expand All @@ -12,6 +10,8 @@ import '../widgets/selectedpartypage/party_desc.dart';
import '../utils/theming.dart';
import '../models/party.dart';
import '../widgets/glass_morphism.dart';
import '../controllers/party_controller.dart';
import '../widgets/dialogs/success_sheet.dart';

class SelectedPartyPage extends StatefulWidget {
final Party party;
Expand Down
4 changes: 2 additions & 2 deletions lib/routes/settings_routes/edit_profile_page.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'dart:io';
import 'package:drinkify/widgets/dialogs/success_sheet.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
Expand All @@ -11,9 +10,10 @@ import '/utils/theming.dart';
import '/widgets/edit_field.dart';
import '/widgets/custom_floating_button.dart';
import '/widgets/dialogs/account_delete_confirm.dart';
import '../../widgets/dialogs/image_picker_sheet.dart';
import '/widgets/dialogs/image_picker_sheet.dart';
import '/controllers/user_controller.dart';
import '/models/user.dart';
import '/widgets/dialogs/success_sheet.dart';

class EditProfilePage extends StatefulWidget {
const EditProfilePage({super.key});
Expand Down
2 changes: 1 addition & 1 deletion lib/routes/settings_routes/organization_page.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import 'package:drinkify/widgets/dialogs/party_options_sheet.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
Expand All @@ -7,6 +6,7 @@ import '/utils/theming.dart';
import '/models/party.dart';
import '/controllers/party_creator_controller.dart';
import '/widgets/partiespage/party_holder.dart';
import '/widgets/dialogs/party_options_sheet.dart';

class OrganizationPage extends StatefulWidget {
const OrganizationPage({super.key});
Expand Down
2 changes: 0 additions & 2 deletions lib/utils/ext.dart
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,7 @@ mixin MapUtils {

return false;
}
}

mixin LocationUtils {
Future<LatLng?> userLocation() async {
LatLng selPoint;
bool serviceEnabled;
Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/createpartypage/invite_friends.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'package:drinkify/models/friend.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';

import '/utils/theming.dart';
import '/routes/create_party_routes/invite_friends_page.dart';
import '/models/friend.dart';

class InviteFriends extends StatefulWidget {
final Function(List<Friend>) onFinish;
Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/glass_morphism.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'dart:ui';
import 'package:flutter/material.dart';

class GlassMorphism extends StatelessWidget {
final double blur;
Expand Down
4 changes: 2 additions & 2 deletions lib/widgets/partiespage/search_and_map.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import '/utils/theming.dart';
import '/models/friend.dart';
import '/controllers/search_controller.dart';
import '/models/party.dart';
import '/utils/ext.dart';
import '/utils/ext.dart' show MapUtils;
import '/models/search_type.dart';
import '/widgets/glass_morphism.dart';

Expand All @@ -25,7 +25,7 @@ class SearchAndMap extends StatefulWidget {
State<SearchAndMap> createState() => _SearchAndMapState();
}

class _SearchAndMapState extends State<SearchAndMap> with LocationUtils {
class _SearchAndMapState extends State<SearchAndMap> with MapUtils {
late int selectedIndex;
late final TextEditingController searchCtrl;
late SearchType searchType;
Expand Down
2 changes: 1 addition & 1 deletion lib/widgets/partiespage/user_holder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class UserHolder extends StatelessWidget {
super.key,
});

void _goToProfile(BuildContext ctx) => ctx.go("/profile", extra: user);
void _goToProfile(BuildContext ctx) => ctx.push("/profile", extra: user);

@override
Widget build(BuildContext context) {
Expand Down
15 changes: 7 additions & 8 deletions lib/widgets/profilepage/user_info.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import 'package:drinkify/models/friend_invitiation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
Expand All @@ -7,6 +6,7 @@ import '/utils/theming.dart';
import '/widgets/dialogs/success_sheet.dart';
import '/models/friend.dart';
import '/models/user.dart';
import '/models/friend_invitiation.dart';
import '/controllers/user_controller.dart';

class UserInfo extends StatefulWidget {
Expand All @@ -23,7 +23,7 @@ class UserInfo extends StatefulWidget {
}

class _UserInfoState extends State<UserInfo> {
bool get _isMyProfile => widget.user != null;
bool get _isMyProfile => widget.friend == null;

@override
Widget build(BuildContext context) {
Expand All @@ -32,9 +32,8 @@ class _UserInfoState extends State<UserInfo> {
//Profile picture
Column(
children: [
//TODO fix friend pfp loading
_isMyProfile
? widget.user!.pfp != null
? widget.user?.pfp != null
? CircleAvatar(
radius: 50,
backgroundImage: NetworkImage(widget.user!.pfp!),
Expand All @@ -46,7 +45,7 @@ class _UserInfoState extends State<UserInfo> {
AssetImage("assets/images/default_pfp.png"),
backgroundColor: Theming.bgColorLight,
)
: widget.friend!.pfp != null
: widget.friend?.pfp != null
? CircleAvatar(
radius: 50,
backgroundImage: NetworkImage(widget.friend!.pfp!),
Expand All @@ -73,8 +72,8 @@ class _UserInfoState extends State<UserInfo> {
),
child: Text(
_isMyProfile
? "@${widget.user!.username}"
: "@${widget.friend!.username}",
? "@${widget.user?.username ?? ""}"
: "@${widget.friend?.username ?? ""}",
style: const TextStyle(
color: Theming.greenTone,
),
Expand All @@ -90,7 +89,7 @@ class _UserInfoState extends State<UserInfo> {
onTap: () async {
const storage = FlutterSecureStorage();
final userId = await storage.read(key: "user_publicId");
if (widget.user!.publicId == userId) return;
if (widget.user?.publicId == userId) return;
final success = await UserController.sendFriendInvitation(
FriendInvitation(
receiverPublicId: widget.friend!.publicId!,
Expand Down

0 comments on commit 3388869

Please sign in to comment.