Giter Site home page Giter Site logo

gala's People

Contributors

vgebs avatar

Watchers

 avatar

gala's Issues

Implement the ProfileService on the backend

ProfileService includes actions to:

  1. 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
    • Add images
      • Add Profile Pics
      • Check for explicit images
  2. GetUserSimple(withImg: Bool)
  3. GetUserFull(withID: String)

Deallocate memory [CHECK FOR MEMORY LEAKS]

  1. Deallocate landing View and viewModel upon leaving page
  2. Deallocate sign up/ login in upon leaving page
  3. Deallocate profile .createAccount upon leaving page (Wipe all images)
  4. 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

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:

  1. Change the SmallUserViewModel class to a struct
  2. Fetch the image and location before passing

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:

  1. When user logs out and into another account in same session
  2. 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:

  1. Ensure that there is indeed changed data
  2. 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.

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.

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.

  1. Add slider to ProfileView
  2. When a user creates an account, record the distance they are willing to travel
    • Therefore you will need to update the UserCore object
  3. Push the data to Firestore in UserCore
  4. 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

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.

Create SwipeView

Make the swipe view

  1. needs to be able to swipe users left (dislike) and right (like)
  2. Needs to be able to drag card anywhere on the screen (not along a predetermined path)
  3. Once the card hits a certain x offset, either like or dislike
  4. 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)
  5. add buttons beneath the card to like or dislike

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)

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.

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.