Coder Social home page Coder Social logo

scranplan's People

Contributors

becky219 avatar jamesclawley avatar jimb0nda avatar jun0305 avatar louisifn avatar nathanbillis avatar shocksocyork avatar sleepy-evelyn avatar

Watchers

 avatar  avatar  avatar  avatar

scranplan's Issues

View author profile not working

When going into your feed, clicking on another persons post and enlarging it to the screen where your able to post comments, clicking the view author profile button doesn’t work.

Searching for recipe and clicking on the no more results

When searching for ingredient and no results appear. Clicking on no more results button causes the app to crash.

Sentry Issue: SCRANPLAN-46

NullPointerException: Attempt to invoke virtual method 'java.util.Map com.google.firebase.firestore.DocumentSnapshot.getData()' on a null object reference
    at com.group4sweng.scranplan.SearchFunctions.SearchListFragment.recipeSelected(SearchListFragment.java:205)
    at com.group4sweng.scranplan.SearchFunctions.SearchRecyclerAdapter$1.onClick(SearchRecyclerAdapter.java:108)
...
(8 additional frame(s) were not displayed)

Infinite Scroll

I believe infinite scroll is broken on the main recipe fragment page. It only loads 5 recipes at a time and doesn't display any more when you reach the end of the horizontal scroll.

Edit profile dosen't show when an image is uploaded

The profile image is being correctly uploaded to firebase but it's not displaying correctly within the edit profile page.
Louis suggested adding 2 image views with one that hides behind the existing one and is set to HIDDEN to begin with since we have been having issues with loading the image using glide.

If a user fails to wait for an image to upload no photo will be displayed in there public profile

Probably wont fix this because it's not really a big issue and I can't really think of a workaround anyway.

Basically if a user cancels an image upload mid way through when they go back into there public profile there image is blank. I could replace this with a placeholder image or joke 404 image instead or even create a new image file name each time and delete the previous file name but this is all extra time I don't want to spend.

UserInfoPrivate object not being passed back via an Intent to the main recipe info screen

How to reproduce:

  • Open edit profile
  • Change filter settings
  • Press back button

The filter settings don't update and unlike the simular issue whereby the recipe list dosen't refresh with the new settings for an entire session these filter settings wont be updated. IE only works on log out and back in.
This was broken somewhere along the way through one of the more recent pull requests but i'm happy to give it a stab tommorow since it's related to me branch.

Out of memory error

The out of memory error has re-surfaced except this time it's on the emulator which is a bit more worrying. Again an issue with older devices not having enough memory/storager available to display the bitmap images.
The bitmap in this case seems to be 45mb which is very large for a recipe image so restrictions into what you can import into the recipe thing need to be implemented if they haven't already

  • Android version 5.0 used (lollipop)
  • Using the original Google Pixel phone.
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.group4sweng.scranplan, PID: 3690
    java.lang.OutOfMemoryError: Failed to allocate a 45158412 byte allocation with 4194304 free bytes and 25MB until OOM
        at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:973)
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2423)
        at android.content.res.Resources.loadDrawable(Resources.java:2330)
        at android.content.res.Resources.getDrawable(Resources.java:758)
        at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:175)
        at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1095)
        at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1017)
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2418)
        at android.content.res.Resources.loadDrawable(Resources.java:2330)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
        at android.view.View.<init>(View.java:3730)
        at android.widget.TextView.<init>(TextView.java:634)
        at android.widget.Button.<init>(Button.java:111)
        at android.widget.CompoundButton.<init>(CompoundButton.java:81)
        at android.widget.CheckBox.<init>(CheckBox.java:72)
        at android.widget.CheckBox.<init>(CheckBox.java:68)
        at androidx.appcompat.widget.AppCompatCheckBox.<init>(AppCompatCheckBox.java:69)
        at androidx.appcompat.widget.AppCompatCheckBox.<init>(AppCompatCheckBox.java:65)
        at androidx.appcompat.app.AppCompatViewInflater.createCheckBox(AppCompatViewInflater.java:212)
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:127)
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1407)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1457)
        at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:180)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at com.group4sweng.scranplan.Social.PostPage.onCreateView(PostPage.java:125)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
        at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
        at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169)
        at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992)
        at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
        at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
    	at androidx.fragment.```

IllegalArgumentException: Could not serialize object. Exceeded maximum depth of 500, which likely indicates there's an obje...

Sentry Issue: SCRANPLAN-2Z

IllegalArgumentException: Could not serialize object. Exceeded maximum depth of 500, which likely indicates there's an object cycle (found in field '[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].user.mealPlanner.[0].ingredientList.[0]')
    at com.group4sweng.scranplan.MealPlanner.PlannerFragment.updateMealPlan(PlannerFragment.java:253)
    at com.group4sweng.scranplan.MealPlanner.PlannerFragment.onActivityResult(PlannerFragment.java:226)
    at com.group4sweng.scranplan.RecipeFragment.onActivityResult(RecipeFragment.java:600)
    at com.group4sweng.scranplan.RecipeInfo.RecipeInfoFragment$2.onClick(RecipeInfoFragment.java:145)
...
(245 additional frame(s) were not displayed)

Changing profile photo on change settings

Change Profile Settings - Load bar stays on 0% forever when attempting to upload a profile photo, when changing picture while loading bar present - causes loading bar to go but new settings can no longer be saved.

Recipe info unable to load (Null object reference)

Crashes on the following line at the 'reheat' instructions.

image
(Line 589, RecipeFragment.class.)

Crash report:

![image](https://user-images.githubusercontent.com/46009144/77852625-8b779a00-71d7-11ea-9186-f25cfbe26f5c.png)

Best estimate of whats going on is it needs to check for if the user is within the mealplanner screen or not. Best done by extending the current class to include the meaplanner stuff. This hasn't yet been done so the checks I think are failing

Rating Bug

Sometimes when leaving a rating on a recipe, the overallRating will either become NaN or go above 5. Not sure what is happening.

Feed recycler cards don't reset

When posting a review/something after someone else the feed cards don't reset fully leaving things like this:
BEFORE
Image from Gyazo

AFTER going to recipe tab and back again
Image from Gyazo
After

Initial preferences skip button dosen't skip

When pressing the skip button on first register the user goes to the MainActivity.java page and hangs at the scranplan logo.

Think this is some issue to do with what happened when we moved the MainActivity and Home classes around.

Viewing a chef profile fails

Fairly self explanitory. From the recipe info screen unable to visit a chefs profile.
It would probably also make sense to make the actual chefs name clickable as well just incase.

User searching

Add functionality to search by user and display the public profile of user(s).

Error inflating tab item in public profile (Icon or Icons within tabs not supported for v23 or lower)

Throws an exception on any device running lower than Android PI due to the material components elements added (it's basically the tab bar in the public profile). Android Pi only has a %39.4 support so switching to the standard way of adding tabs in, default Android libraries is required unless an alternative can be found or a kind of workaround.
See latest comment.

To replicate:

  • Use any device on an Android version lower than PI (version 9)
  • open the public profile page

The following still applies. But it does seem to work with android 5.
image

    Process: com.group4sweng.scranplan, PID: 4041
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.group4sweng.scranplan/com.group4sweng.scranplan.PublicProfile}: android.view.InflateException: Binary XML file line #379: Error inflating class com.google.android.material.tabs.TabItem
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
        at android.app.ActivityThread.access$800(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: android.view.InflateException: Binary XML file line #379: Error inflating class com.google.android.material.tabs.TabItem
        at android.view.LayoutInflater.createView(LayoutInflater.java:633)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.group4sweng.scranplan.PublicProfile.onCreate(PublicProfile.java:104)
        at android.app.Activity.performCreate(Activity.java:5937)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
        at android.app.ActivityThread.access$800(ActivityThread.java:144) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5221) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
        at android.view.LayoutInflater.createView(LayoutInflater.java:607)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:809) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 
        at com.group4sweng.scranplan.PublicProfile.onCreate(PublicProfile.java:104) 
        at android.app.Activity.performCreate(Activity.java:5937) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
        at android.app.ActivityThread.access$800(ActivityThread.java:144) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5221) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
     Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f0800f3
        at android.content.res.Resources.getValue(Resources.java:1233)
        at androidx.appcompat.widget.ResourceManagerInternal.loadDrawableFromDelegates(ResourceManagerInternal.java:252)
        at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:139)
        at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132)
        at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:104)
        at androidx.appcompat.widget.TintTypedArray.getDrawable(TintTypedArray.java:76)
        at com.google.android.material.tabs.TabItem.<init>(TabItem.java:57)```

Mealplanner dosen't update upon changing preferences

The main recipe screen updates properly but you can only update the MealPlanner upon logging out and back in again. I'm pretty sure this is because the userInfoPrivate object containing all local profile info isn't being passed upon switching tabs to the MealPlanner.
With a bit of debugging you could confirm if this is true or not quite easily.

Given i've been working with the Mealplanner I might be able to figure out how to fix this but this is more James Cs thing to fix I think.

Filter search preferences not consistent

When changing the filters when searching for a recipe these filter settings are saved when moving between the mealplanner, timeline, and recipes fragments but reset after visiting the profile settings or public profile page.

This is kind of confusing. Need a way of storing the filters search preferences within app. Shared preferences would work.

Definitely not a big issue and can be resolved in time or not at all if we are running low on time.

KitKat 4.4 (Multiple issues)

Will have to push the minimum supported SDK version to 21 (Lollipop).
KitKat has a lot of weird quirks that isn't allowing it to work for multiple different reasons.

for e.g. switches take on this weird style that means they don't fit within a view and for some reason it fails to load the recipe screens for recipes causing a crash.
The next version up, lollipop only has the search query layout issue which we can fix.
All the other issues don't exist for this version.

With this version we are still supporting 94.1% of available devices.
If we have to move up another version because of more issues then Marshmallow would be our best bet but it starts getting rocky there with only 85% support.

Favourites don't update

When a favourite is added the favourite section of the app doesn't refresh, only will when you go to another screen such as the meal planner then back again

image
image
image
image

Out Of Memory issue (Bitmap image files) - Recipe info fragment

Happens when trying to load the recipe fragment for different recipes from the home screen.

Start of the error
I/art: Alloc sticky concurrent mark sweep GC freed 15774(781KB) AllocSpace objects, 3(48KB) LOS objects, 8% free, 85MB/93MB, paused 1.220ms total 21.453ms I/art: Clamp target GC heap from 101MB to 96MB Alloc partial concurrent mark sweep GC freed 2615(129KB) AllocSpace objects, 1(16KB) LOS objects, 11% free, 85MB/96MB, paused 1.007ms total 62.957ms I/art: Clamp target GC heap from 101MB to 96MB Alloc concurrent mark sweep GC freed 519(45KB) AllocSpace objects, 0(0B) LOS objects, 11% free, 85MB/96MB, paused 1.007ms total 73.486ms Forcing collection of SoftReferences for 12MB allocation I/art: Clamp target GC heap from 101MB to 96MB Alloc concurrent mark sweep GC freed 15(456B) AllocSpace objects, 0(0B) LOS objects, 11% free, 85MB/96MB, paused 1.068ms total 72.570ms E/art: Throwing OutOfMemoryError "Failed to allocate a 12635196 byte allocation with 11297172 free bytes and 10MB until OOM" I/art: Alloc sticky concurrent mark sweep GC freed 5(672B) AllocSpace objects, 0(0B) LOS objects, 8% free, 85MB/93MB, paused 1.007ms total 7.324ms I/art: Clamp target GC heap from 101MB to 96MB Alloc partial concurrent mark sweep GC freed 6(192B) AllocSpace objects, 0(0B) LOS objects, 11% free, 85MB/96MB, paused 1.037ms total 62.988ms I/art: Clamp target GC heap from 101MB to 96MB Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 11% free, 85MB/96MB, paused 1.007ms total 72.021ms Forcing collection of SoftReferences for 12MB allocation I/art: Clamp target GC heap from 101MB to 96MB Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 11% free, 85MB/96MB, paused 976us total 72.326ms E/art: Throwing OutOfMemoryError "Failed to allocate a 12635196 byte allocation with 11297076 free bytes and 10MB until OOM" D/skia: --- allocation failed for scaled bitmap D/AndroidRuntime: Shutting down VM E/art: li.han, Prepare to dump hprof for OOM Error ! li.han, Directory [/data/log] could not be write !

End of error
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.group4sweng.scranplan, PID: 18270 java.lang.OutOfMemoryError: Failed to allocate a 12635196 byte allocation with 11297076 free bytes and 10MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:837) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:656) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1037) at android.content.res.Resources.loadDrawableForCookie(Resources.java:4056) at android.content.res.Resources.loadDrawable(Resources.java:3929) at android.content.res.Resources.getDrawable(Resources.java:1991) at android.content.res.Resources.getDrawable(Resources.java:1973) at android.content.Context.getDrawable(Context.java:409) at androidx.core.content.ContextCompat.getDrawable(ContextCompat.java:454) at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:144) at androidx.appcompat.widget.ResourceManagerInternal.getDrawable(ResourceManagerInternal.java:132) at androidx.appcompat.content.res.AppCompatResources.getDrawable(AppCompatResources.java:104) at androidx.appcompat.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:59) at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:78) at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:68) at androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:187) at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:107) at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1407) at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1457) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:732) at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:511) at android.view.LayoutInflater.inflate(LayoutInflater.java:415) at android.view.LayoutInflater.inflate(LayoutInflater.java:366) at com.group4sweng.scranplan.RecipeInfo.RecipeInfoFragment.onCreateView(RecipeInfoFragment.java:116) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447) at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6934) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

Recipe Info screen top bar

The top bar for recipe info is kinda getting squished a bit which is warping the 'lets cook' button.
This was tested on a Samsung A10 which is a fairly new phone with a large screen size and resolution so for smaller phones the effect will be even greater.

Screenshot_20200527-192102_Scran Plan

Delay deleting photos

Deleting posts with photos close to the 4mb limit took up to about 10 seconds to delete on occasion on an actual testing device. Using the same loading screen when deleting a post might be an idea.

No gif/video, on an actual device with no screen capture available.

Chef info causing crashes when data is missing

If a chef's account is deleted (or in the future if a recipe is removed from an account) the recipe info fragment crashes when attempting to display the chefs name.
Need a simple handler to display a '[deleted]' string or something similar to avoid this.

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.group4sweng.scranplan, PID: 9155 java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.Map.get(java.lang.Object)' on a null object reference at com.group4sweng.scranplan.RecipeInfo.RecipeInfoFragment$6$1.onComplete(RecipeInfoFragment.java:432) at com.google.android.gms.tasks.zzj.run(Unknown Source:4) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:7777) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1047)

Favourites don't work from meal planner

When making items your favourite, they don't work from the meal planner. Work fine form the recipe screen.

Reproduction

Go into meal planner and try and favourite an item after adding it to your meal plan.

Queries failing

Can't get any queries working on the master branch. Not sure whats up with this.

Also some really weird layout issues.

Screenshot_2020-03-28-01-33-03

Switching between Tabs breaks searching

How to reproduce:

  • Switch to the Mealplanner or Feed screens.
  • Return back to the Recipes screen and attempt to search
  • Should come up with a blank search result.

Search results will fail consistently afterwards as well regardless.
This was previously thought to be an issue with Algolia but dosen't seem to be. It's a very well hidden issue which is why it's took a while to figure out.

searching fail

Multiple issues related to privacy settings

In descending order...
Apologies for not outlining these initially before merge, they where quite hard to find and involved making 2 accounts.

There are other issues as well currently in master but i've resolved them with the 'bug+design fixes' branch. Might be worth doing some pair programming to fix this. Certainly could speed things up a bit or if yer short for time I could have a stab.

  • Privacy options no longer sync as this had been commented out in the edit profile page and so now displays incorrectly when switching between private/public profiles
  • A user who dosen't have a private account (IE everything is public) cannot hide there Feed or Recipes.
  • When private profile is disabled you can't view the image for your own profile.
  • With a private profile disabled when changing any privacy setting it updates the 'privatePrivacy' collection. It should update 'publicPrivacy'.
  • When switching to the 'photos' tab after loading another users profile the app crashes. Seems to be an issue with a null object reference. Code for the crash for this one is below.

Line it crashes at:
image

    Process: com.group4sweng.scranplan, PID: 22436
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
        at com.group4sweng.scranplan.PublicProfile$4.onTabSelected(PublicProfile.java:302)
        at com.google.android.material.tabs.TabLayout.dispatchTabSelected(TabLayout.java:1734)
        at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:1727)
        at com.google.android.material.tabs.TabLayout.selectTab(TabLayout.java:1687)
        at com.google.android.material.tabs.TabLayout$Tab.select(TabLayout.java:2080)
        at com.google.android.material.tabs.TabLayout$TabView.performClick(TabLayout.java:2269)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)```

Tests Failing from latest PR

I have decided to merge #131 but we have failing tests for the other user stories, this issue is to remind me to resolve them so we have 100% test success rate.

Gaps in recipe info

From what I have tried before...
layout.setVisibility(View.GONE);
dosen't work for relative layouts so the only way I can think of fixing this is to convert to a constraint layout. If y'all have a workaround go for it though.
Mainly pointing this issue to @Jimb0nda since he designed the recipe info screen.

Also tagged @louisifn because he mentioned the View.GONE thing before & @jamesclawley knows a lot more about relative layouts.

image

Unique username prompt issues

The unique username tick button dosen't always update to a cross when entering a username that has already been taken and the prompt (toast message) returned when choosing a username already taken is not correct.

Timer appears on first slide

Timer appears on the first slide of the presentation. #55 was approved due to this bug being non-fatal and documentation updated.

How to reproduce

  • Click on a recipe
  • Click lets cook
  • First slide has timer on

Screen rotation issues

Rotating the screen on the main recipe page causes the app to crash.
There are a number of issues presented when rotating the screen. For e.g. there technically 2 different views so you have to pass info between them otherwise the following can happen.

We can just fix this by forcing the recipe screen so it can't be displayed in landscape within the android manifests file. I did do this before but it got removed for some reason.

I'm assuming because we wanted it to be displayed in landscape, but tbf it looks pretty bad in landscape atm so it would need to be re-designed as well for that orientation.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.group4sweng.scranplan, PID: 31088
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.group4sweng.scranplan/com.group4sweng.scranplan.Home}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.group4sweng.scranplan.RecipeFragment: could not find Fragment constructor
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3121)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264)
        at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5046)
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4955)
        at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7078)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
     Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.group4sweng.scranplan.RecipeFragment: could not find Fragment constructor
        at androidx.fragment.app.Fragment.instantiate(Fragment.java:563)
        at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57)
        at androidx.fragment.app.FragmentManager$3.instantiate(FragmentManager.java:390)
        at androidx.fragment.app.FragmentStateManager.<init>(FragmentStateManager.java:74)
        at androidx.fragment.app.FragmentManager.restoreSaveState(FragmentManager.java:2454)
        at androidx.fragment.app.FragmentController.restoreSaveState(FragmentController.java:196)
        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:287)
        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:106)
        at com.group4sweng.scranplan.Home.onCreate(Home.java:104)
        at android.app.Activity.performCreate(Activity.java:7327)
        at android.app.Activity.performCreate(Activity.java:7318)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3101)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264) 
        at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5046) 
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4955) 
        at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7078) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964) 
     Caused by: java.lang.NoSuchMethodException: com.group4sweng.scranplan.RecipeFragment.<init> []
        at java.lang.Class.getConstructor0(Class.java:2328)
        at java.lang.Class.getConstructor(Class.java:1725)
        at androidx.fragment.app.Fragment.instantiate(Fragment.java:548)
        at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57) 
        at androidx.fragment.app.FragmentManager$3.instantiate(FragmentManager.java:390) 
        at androidx.fragment.app.FragmentStateManager.<init>(FragmentStateManager.java:74) 
        at androidx.fragment.app.FragmentManager.restoreSaveState(FragmentManager.java:2454) 
        at androidx.fragment.app.FragmentController.restoreSaveState(FragmentController.java:196) 
        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:287) 
        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:106) 
        at com.group4sweng.scranplan.Home.onCreate(Home.java:104) 
        at android.app.Activity.performCreate(Activity.java:7327) 
        at android.app.Activity.performCreate(Activity.java:7318) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3101) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3264) 
        at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5046) 
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4955) 
        at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7078) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964) ```

Adding any filter at all breaks searching + scrollviews

How to replicate

  • Set any dietary option or allegern option to true in the profile settings
  • Log out and log back in again (Recipe info screen currently not updating correctly as well)
  • Top picks and trending will be missing & searching will be impossible.

Assuming something in the more recent branches has broken this functionality.
Filters also shouldn't ever effect the ability to search for a chef.

IllegalStateException: Fragment RecipeFragment{d123cb1} (49ff028b-d1c0-4e63-ad5e-a99d50ac1868)} not attached to a context.

Sentry Issue: SCRANPLAN-G6

IllegalStateException: Fragment RecipeFragment{d123cb1} (49ff028b-d1c0-4e63-ad5e-a99d50ac1868)} not attached to a context.
    at com.group4sweng.scranplan.SearchFunctions.RecipeFragment.loadNativeAds(RecipeFragment.java:756)
    at com.group4sweng.scranplan.SearchFunctions.RecipeFragment.access$200(RecipeFragment.java:57)
    at com.group4sweng.scranplan.SearchFunctions.RecipeFragment$5.onComplete(RecipeFragment.java:453)
...
(9 additional frame(s) were not displayed)

PresentationTextView countdown timer

Countdown timer is throwing an error from within the PresentationTextView class.
This isn't the same countdown timer i've just finished (the audio one).
I think the jist of the error is it dosen't exist.

I think James Clawley and Nathan mainly worked on the presentation so just tagging u guys.

        at com.group4sweng.scranplan.Presentation.Views.PresentationTextView.stopTimers(PresentationTextView.java:169)
W/System.err:     at com.group4sweng.scranplan.Presentation.PresentationSlide.hide(PresentationSlide.java:49)
        at com.group4sweng.scranplan.Presentation.Presentation.toSlide(Presentation.java:410)
        at com.group4sweng.scranplan.Presentation.Presentation.access$000(Presentation.java:70)
        at com.group4sweng.scranplan.Presentation.Presentation$2.onItemSelected(Presentation.java:269)
        at android.widget.AdapterView.fireOnSelected(AdapterView.java:957)
        at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:946)
        at android.widget.AdapterView.access$300(AdapterView.java:55)
        at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:910)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)```

Favourites star dosen't update

When adding a recipe to favourites it would make sense for the star at the top to change colour or fill in. Currently it just sends a toast message.

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.