gala's People
gala's Issues
Update stories and recenylJoined data on update UserCore
If a user changes their userCore, we need to:
- Update the recentlyJoined profile, assuming that they are a new user
- Update stories, assuming they have posted a story
Do not publish UserAbout if fields are empty
- If all fields are empty, do not add an entry to the database.
- Only add to UserAbout if one or more fields are filled
Redesign the LandingView
Make a new LandingView that animates the gala logo flashing in and out.
Add a slider that allows the user to choose their desired age range
Add a slider in the ExploreView that allows user to choose their desired age range for matches.
Implement the ProfileService on the backend
ProfileService includes actions to:
- Create Profile
- Add Text
- UserSimple
- name, age, gender, sexuality, Geohash
- UserDetails
- Bio, job, school, other about stuff
- Check for profanity in bio job, school and other
- UserSimple
- Add images
- Add Profile Pics
- Check for explicit images
- Add Text
- GetUserSimple(withImg: Bool)
- GetUserFull(withID: String)
Infinite loop when user doesn't add an image when creating account
Be able to view user profile
Once the users are in the RecentlyJoinedView, add functionality to view that user's profile.
Deallocate memory [CHECK FOR MEMORY LEAKS]
- Deallocate landing View and viewModel upon leaving page
- Deallocate sign up/ login in upon leaving page
- Deallocate profile .createAccount upon leaving page (Wipe all images)
- Deallocate contentView (Profile standard, chats NOT IMPLEMENTED YET, camera [quit session], explore view NOT IMPLEMENTED YET, Showcase view NOT IMPLEMENTED)
In AppState we have booleans associated with the views. Once this boolean is toggled, we wish to deInit the view/ViewModel. Upon trying, the de-initializer is not being called except in strange use cases (See Auth publisher bug). Find out why this is and fix the problem.
https://krakendev.io/blog/weak-and-unowned-references-in-swift
https://developer.apple.com/documentation/metrickit/improving_your_app_s_performance
https://docs.swift.org/swift-book/LanguageGuide/Deinitialization.html
Add a listener on UserProfiles to update RecentlyJoined
Because we are duplicating data in the database, we need to listen for updates to the UserProfiles so we can then update the RecentlyJoined profiles if need be.
Add location to UserProfiles in Firestore
Push location to firestorm when pushing profileText.
Is it necessary to push country as well? yes it is
Get data flowing through RecentlyJoinedView
Link Navbar to PagerView
Link the navbar to PagerView so the user can view which page they are on
SignInSignUp Validation
Ensure that:
- name is valid
- password is valid
Update DB when user changes locations
Check the location from the DB, if the location on device does not match, update DB.
Given a users coordinates, retrieve the province/state they are located in
Currently, we are only able to get the city and country they are in. We need to be able to see the province/ state they reside in. Browse some open-source packages and see what you can find.
Link: https://developer.apple.com/documentation/corelocation/clplacemark/1423628-administrativearea
RecentlyJoinedView memory leak
When the user swipes through the RecentlyJoinedView, every time the page reappears it fetches the image and location. Make sure this only happens once.
Possible fixes:
- Change the SmallUserViewModel class to a struct
- Fetch the image and location before passing
Display location on SignUpView & ProfileView
Display the users location (city name) on the signUpView & on profile. If user chooses not to use location services, have them pick a citiy where the app is being offered.
Rename local project
Rename project from Gala_Final to Gala.
https://ahadsheriff.medium.com/how-to-rename-an-xcode-project-without-losing-your-mind-88e558fb7566
Something wrong with the logout -> login system
Issue: When the user logs out and another user logs in; both on same device, the last users info is still in profile.
Investigate:
- When user logs out and into another account in same session
- new session, same install (i.e., close app and reopen it)
Be able to edit profile
Allow the user to edit the profile and have it update in the database.
Because the edit button is fairly fun to press, users will likely click it several times.
After the user is done editing their profile:
- Ensure that there is indeed changed data
- Debounce 5 seconds before sending their data to the database
If the user clicks edit again, cancel the operation and wait for them to be done editing.
Screen doesn't stop loading when user creates profile and leaves images blank
When the user creates an account and does not enter any images, the screen continues to load.
TRY
Check for images in the array before calling the request.
Check for matches trigger when a user makes a like
When the user likes another user, a function is triggered that checks whether or not they have matched.
If the users have matched,
-
Both likes are removed from the Likes collection
-
Each user will have a new match in the matches collection
Create secrets file
The firebase ID is in the repo.
We will have to delete the existing db and create a new one, ensuring that the file is included in a .gitignore file when pushed.
Include pod files, .plist, .xcworkspace, assets etc. Keep source code only.
Create account is not waiting for all images to be in DB before continuing
In some cases, the app is not waiting for all images and user data to be pushed to the database before continuing to the app.
So when the user enters the main screen after signing up, they don't see all of their data.
Add option to turn on location from SignupView and ProfileView
If the user denies access to location services, add an option to turn on location where the location would be.
Query the RecentlyJoinedProfiles that match the users core info
ex//
Straight male will see:
- Straight women
- Bisexual women
Query users only if the current users age is within the fetched users preferred age range
example:
- Joe is 22 with a preferred age range of 18-30
- Lilly is 26 with a preferred age range of 23-30
- Joe and Lilly will never see each other
Be able to like a user
After the users have come in through the RecentlyJoinedView, add a button that allows the current user to like another user. Once the user is liked, remove them from the RecentlyJoinedUser array.
Add a range slider to ProfileView for distance
Add a single knob range slider to ProfileView so the user can choose how far they are willing to travel for LOVVEEE.
- Add slider to ProfileView
- When a user creates an account, record the distance they are willing to travel
- Therefore you will need to update the UserCore object
- Push the data to Firestore in UserCore
- Ensure that the query includes a filter to ensure that both parties are willing to travel the specified distance
- Example:
- User A is willing to travel 30km
- User B is willing to travel 15km
- The distance between users is 20km
- Therefore the users will not see eachother
Screen doesn't stop loading when user enters wrong credentials
- When user logs in, if they use the wrong email or password, the screen doesn't stop loading
- When the user tries to signup with an existing email, the screen doesn't stop loading
Redesign ExploreView and begin implementing ViewModel
Get the explore view working with these views
- Matches story view
- recently Joined User view
- Vibe view
Make sure the users profile is pulled successfully before allowing user to enter app
If the user registers but does not create a profile (ProfileCore model), the user will still be able to log in but will not be able to be viewed by anyone else or be able to view anyone else.
So to fix this, ensure that a UserCore model is pulled before allowing the user to enter the app. If the userCore returns nil, take them to the .createProfile page and ensure they make an account.
Get User Location
Get Location as well as distance away (in km & minutes/Hours) from user
https://mobileinvader.com/corelocation-in-swiftui-mvvm-unit-tests/
Implement XCTest for SignInSignUpValidation
Setup up XCTest
Allow user to enter app if they are already signed in
- Using the authentication publisher and mapping the value to the allowAccess variable causes the app to misbehave
ie// Camera is set to nil, profile is set to nil - When using a userDefault the profile standard model does not fetch info (is it not being initialized?)
https://www.youtube.com/watch?v=ONwWi-u1WTA&list=PLLvVbXNzMjkvLVmXOzUeAmcV-zeeIcU_m&index=11
Start in file: AppState.swift
Create SwipeView
Make the swipe view
- needs to be able to swipe users left (dislike) and right (like)
- Needs to be able to drag card anywhere on the screen (not along a predetermined path)
- Once the card hits a certain x offset, either like or dislike
- show a stack of cards underneath the card (only 2 cards to be shown underneath, and make sure you cannot drag cards that are not on top)
- add buttons beneath the card to like or dislike
Fix all services that include functions to "getCurrentUser"
If a service has a function that goes along the lines of "getCurrentUser", delete it and make it called "getUser(uid:)".
DRY principle, DON'T REPEAT YOURSELF!!!
Test the recently joined user service for users of both genders and all sexualities
- Make sure that users are being pulled for both gender and sexuality
- Make sure that after a user creates an account they see the recently joined users
Querying by Date
Before pushing the date to firestore, write it in YYYY/MM/DD format as a string.
Firestore will then sort the document and make it much easier to query.
Get images for recentlyJoined
In UserCoreService, update the current function; getAllRecents.
getAllRecents will fetch all recents and then fetch their profile picture.
Reorganize Database
UserInfo
- uid, name , age, gender, sexuality, longitude, latitude, Geohash, DateJoined
UserAbout
- bio, job, (other about options)
Reorganize Git file structure
Make two folders:
- FrontEnd
- All iOS and pods
- BackEnd
- Cloud functions
Link: https://githowto.com/moving_files
Link: http://manpages.ubuntu.com/manpages/trusty/man1/git-mv.1.html
Link: https://stackoverflow.com/questions/3900805/git-command-to-move-a-folder-inside-another
Fix toggle Dark mode
Images coming back from firebase aren't in order.
Link the value of 'i' from the 'for loop' to the image when the image is received. Then store the images in a container model that will sort them upon entry. The container should also have the ability to reorganize & delete the elements if the user chooses.
Get backend setup with Node.js & Cloud Functions
Ensure that the backend is setup with node.js and firebase cloud functions.
Implement Pages View/ Fix Camera
The camera button breaks when you place it inside of the Pages view.
ContentView.swift
It could be an issue to do with the camera button UI or how it's displayed.
DraggableCameraButton.swift
Link: https://github.com/HatsuneMikuV/SwiftUISegmentedControlPage
Link: https://kavsoft.dev/SwiftUI_2.0/Swipeable_Instagram_Layout
Link: https://github.com/Connapptivity/SwiftUI-PageView
Wait for all async events in a function to continue before submitting promise
When the user pulls their profile from firestore, sometimes the image comes back first and therefore the text does not get received. Find a way to wait for all events to finish before submitting promise.
Core data is not being rendered
Create a test file and debug the process.
Once core data works, allow user to enter app once core data is done being saved instead of waiting for firebase.
Complete the Chats
Chats View
-
Ensure that the user is able to see all chats as well as new matches.
-
Be able to view when the last message was sent or received
- If no message has been sent yet, show the match date -
be able to view the matches profile by clicking on the profile image
-
Be able to view whether a snap was sent or a chat
- Be able to 'open' (add receipt) the chat
- Be able to 'open' (add receipt) the snap
- If it is a snap, make it the priority click.
- Give the user the option to by-pass the snap by adding an option to view the chat instead
- in the chat, have a snap message bubble placed in order of the chat log. The snap can be opened from here
- Be able to open snap. All snaps need to be opened.
- Test the snap service by using two phones. Open all or some snaps then send a new snap from the other phone and see if there is an out of bound index
- Make sure that if the last message was a snap, you keep it as a receipt. otherwise, delete it.
-
Make sure the matches are ordered in the ChatsView such that the most recent messages/ matches are first.
Chat View
-
Be able to send message
-
Be able to view all messages in order
-
be able to listen/retrieve all messages to and from the user
-
If no messages have been sent, show the match date in the scroll
-
Be able to view the matches profile by clicking on the profile image
-
Be able to send and receive snap real-time
Ensure that the border on LandingView fits all screens
Make the outer border fit all screen sizes.
Once complete, try out the border look in the app.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.