giseldo/neodataset huggingface dataset:
Improve mobile error message and add retry logic

<!---
Please read this!

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "T - Bug" label and verify the issue you're about to submit isn't a duplicate.
--->

### Summary

The error message shown on a failed request (as below on failed upvote) is not helpful to the user or developer.


### Steps to reproduce

1. Lose connectivity.
2. Try upvote something.

### Platform information

Cross-platform mobile.

### App version

v3.12.0

### What is the current *bug* behavior?

Generic error is shown to user.

### What is the expected *correct* behavior?

should show an alert / modal to the user informing them of the error (voting could not be done). Also a retry button would be ideal.

### Relevant logs and/or screenshots

![Screenshot_20191214-132038_Minds](/uploads/9a1caae9152f48fb9e3e043fc309c1f0/Screenshot_20191214-132038_Minds.jpg)

### Possible fixes

- [ ] Add specific error messages to retry failures
- [ ] Add a retry button for failed network requests (if possible without significant re-architecture)

/label ~"T \- Bug" ~"S \- Triage:new"


Story points: 4.0
No comment deletion option

<!---
Please read this!

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "T - Bug" label and verify the issue you're about to submit isn't a duplicate.
--->

### Summary

There is no option to delete comments iOS and Android.

![image](/uploads/9f1f06f8d3fb68a0fa1063c44fbbcbdb/image.png)

### Steps to reproduce

1. Go to comment
2. Press comment
3. No deletion option appears

### Platform information

Latest version of Android / iOS

### Relevant logs and/or screenshots

* https://www.minds.com/newsfeed/1050208282378067968
* https://www.minds.com/newsfeed/1050220624535281664

Story points: 1.0
Implement automatic cleanup and upload of translation files

- [ ] Implement fastlane that downloads, updates and sanitizes translation files
- [ ] Use the githook https://www.git-scm.com/docs/githooks#_post_checkout to call a script that will download the translation files if the branch starts with `release`
- [ ] Implement a build step that uploads the changes translation files for branches marked `release`


Story points: 4.0
Error loading notifications for lots of users

If this is the notification backend issue that Martin mentioned, let's get it fixed on the backend and move the estimate to that card

Sentry Issue: [MOBILE-92](https://sentry.io/organizations/minds-inc/issues/1345897362/?referrer=gitlab_integration)

```
Error: loadList Error: Error: Request error on: api/v1/notifications/all.
    at (892.js:1)
    at p(154.js:1)
    at (154.js:1)
    at p(154.js:1)
    at n(154.js:1)
...
(13 additional frame(s) were not displayed)
```

Story points: 4.0
Error: Could not the entity - User is disabled

Looks like we're getting a weird native code error when a user is disabled.

Sentry Issue: [MOBILE-52](https://sentry.io/organizations/minds-inc/issues/1289768117/?referrer=gitlab_integration)

```
Error: Could not the entity
  File "app:///[native code]", in construct
  File "src/common/services/api.service.js", line 15, in err
    constructor(...args) {
  File "src/common/services/api.service.js", line 70, in logout
    if (err instanceof Error) {
  File "src/common/services/api.service.js", line 142
    session.logout();
  File "app:///[native code]", in callImmediates
...
(17 additional frame(s) were not displayed)
```

Story points: 4.0
TypeError: null is not an object (evaluating 'w.forEach')

Sentry Issue: [MOBILE-CZ](https://sentry.io/organizations/minds-inc/issues/1373089573/?referrer=gitlab_integration)

```
TypeError: null is not an object (evaluating 'w.forEach')
  File "src/common/services/entities.service.js", line 119, in call
    localEntities.forEach((entity: any) => {
  File "app:///[native code]", in callImmediates
  File "app:///[native code]", in value
  File "app:///[native code]", in value
...
(13 additional frame(s) were not displayed)
```

Story points: 4.0
Error: loadList Error: Error: Request error on: api/v1/notifications/all.

Sentry Issue: [MOBILE-CX](https://sentry.io/organizations/minds-inc/issues/1373073723/?referrer=gitlab_integration)

```
Error: loadList Error: Error: Request error on: api/v1/notifications/all.
  File "src/notifications/NotificationsStore.js", line 158, in call
    const myError = new Error(`loadList Error: ${err}.`)
  File "app:///[native code]", in callImmediates
  File "app:///[native code]", in value
  File "app:///[native code]", in value
...
(13 additional frame(s) were not displayed)
```

Story points: 4.0
SyntaxError: JSON Parse error: Unrecognized token '<'

Sentry Issue: [MOBILE-4](https://sentry.io/organizations/minds-inc/issues/1251713947/?referrer=gitlab_integration)

```
SyntaxError: JSON Parse error: Unrecognized token '<'
    at parse([native code]:0)
    at promise/setimmediate/core.onRejected(core.js:35)
    function tryCallOne(fn, a) {
    at promise/setimmediate/core.(core.js:114)
    var cb = self._65 === 1 ? deferred.onFulfilled : deferred.onRejected;
    at react-native/Libraries/Core/Timers/JSTimers.q(JSTimers.js:143)
    type === 'setInterval' ||
    at react-native/Libraries/Core/Timers/JSTimers.callImmediates(JSTimers.js:193)
    for (let i = 0; i < passImmediates.length; ++i) {
...
(8 additional frame(s) were not displayed)
```

Story points: 4.0
Error: Call to a member function getUrn() on null

Sentry Issue: [ENGINE-15](https://sentry.io/organizations/minds-inc/issues/1177742839/?referrer=gitlab_integration)

```
Error: Call to a member function getUrn() on null
  File "/Controllers/api/v2/analytics/views.php", line 55, in Minds\Controllers\api\v2\analytics\views::post
    ->setEntityUrn($boost->getEntity()->getUrn())
  File "/Api/Factory.php", line 87, in Minds\Api\Factory::build
    return $handler->$method($pages);
  File "/Controllers/api/api.php", line 81, in Minds\Controllers\api\api::post
    return Factory::build($pages, $this->request, $this->response);
  File "/Core/Router.php", line 157, in Minds\Core\Router::route
    return $handler->$method($pages);
  File "/index.php", line 9
    $router->route();
```

Story points: 4.0
Animated gifs are no longer animated when uploading from IOS cameraroll

v3.12.0 RC5, IOS 13, IPAD

Download an animated gif to your device
Open Minds and post the gif.
Notice how it is animated in the camera roll during selection
Upload it
It will no longer be animated
Viewing it on the site will not be animated

Probably just the mime type

Story points: 2.0
Group Composer Post Button does not work

### Summary

When using the new composer to created a post in a group, the post button does not unlock when you are finished writing your post.

### Steps to reproduce

1. in a group you have joined, use the old compose button to trigger composer
2. Compose a post
3. Post button does not work

### Platform information

Android 9

### App version

4.1.0 rc2

### What is the current *bug* behavior?

New composer post button to submit a post does not work when submitting a post to a group

### What is the expected *correct* behavior?

New composer should work in groups

### Relevant logs and/or screenshots

![image](/uploads/df92c695a5bc4e6be02d9ad469c8bcd1/image.png)

Story points: 2.0
Onboarding Info Step Continue button disapears after entering birthdate


### Summary

Onboarding Info Step Continue button disapears after entering birthdate

### Steps to reproduce

1. Onboard a new channel perform all the steps
2. Enter a birthdate greater than 18 years, need to enter date twice and continue button disappears.

### Platform information

Android 9

### App version

4.1.0 rc 2

### What is the current *bug* behavior?

Continue button disappears after completing info step

### What is the expected *correct* behavior?

continue button should be available after validating sms and confirming birth date.

### Relevant logs and/or screenshots

![Screenshot_20200428-102140_Minds](/uploads/ef017ee79d601d1bcf0f98548ab3e044/Screenshot_20200428-102140_Minds.jpg)

Story points: 2.0
Remove onboarding progress bar on channel until working correctly

The Onboarding completion widget on channels is not working. We should remove this until it is working properly. See video.

I can't upload a video of the full process, but I have tried doing this many times and filling out the complete form, including verifying my phone number, but it always tells me I am not completed, and it does not seem to be remembering the information I enter for the Location, Birthday, and Phone (not depicted in video). You also have to press Continue twice on the final screen.

![RPReplay_Final1587671085](/uploads/8f6f7bd0d1f2cbab869578f29559bc56/RPReplay_Final1587671085.MP4)

Story points: 2.0
Creating a remind looks skewed and has strange navigation back to composer

See video. Confusing user experience.

Steps to replicate:
1. Click to remind a post with a native image.
2. Notice how much space there is for Speak Your Mind, there is far too much space
3. Click on the native image
4. Navigate back
5. Notice you are now in the composer, and not the Remind composer (where you just were) as expected.

![RPReplay_Final1587670888](/uploads/89ba40cb473065a529c3a16bbe3aaf5b/RPReplay_Final1587670888.MP4)

Story points: 1.0
Navigation issues from Post Options

Navigating back from tag manager is confusing. See steps to replicate below.

Steps to replicate:
1. Open composer
2. Go to text option
3. Click to add tags
4. Add a few hashtags
5. If you tap Done, it navigates you back to the Photo screen, which is confusing and makes it seem like nothing worked. It should take you to the status screen, where the tags show. If you tap back, it navigates you back to the Photo screen. It should also take you to the status screen. This is happening with all Post Options.

Solution: Any time you navigate back, or press "Done" in any Post Options, you should be navigated back to the Text screen, where you can see the status and any uploaded media if applicable.

Story points: 1.0
Implement the wallet main activity screen

This is for configured, onboarding wallets for existing users. It's a good screen to start with because the rest will onboarding and settings

https://design.minds.com/hosted/mobile/michael/mobile%23-wallet/#artboard7

- [ ] New wallet activity
- [ ] Tabs for currencies
- [ ] Overview button for each currency
- [ ] Plotly graphs for their transactions history (tokens for now, the other currencies will be other cards)

Transactions Screens
https://design.minds.com/hosted/mobile/michael/mobile%23-wallet/#artboard19


Questions
@michaelfbradley @ottman @jotto141 @markeharding are we rolling with these four currency tabs? Tokens, USD, Ether, Bitcoin. The UI's layout is fine for narrow profiles as designed, but what happens when we add a currency

Story points: 3.0
Back button for Messenger

Reported by Peggy Ottman

Peggy Ottman: No back button to return to newsfeed from messenger

Peggy Ottman: Never mind! I just tried swiping again and voila!

This is the last issue holding up the 4.1.0 release. So if we can get this fixed quickly, we should be good for a build.

FYI: @markeharding

Story points: 1.0
Settings sizing issues

Certain sunscreens in settings are smaller than others 

![Screenshot_20200419-073535_Minds](/uploads/ac439211c55968f90245bd4fbfe198c1/Screenshot_20200419-073535_Minds.jpg)

![Screenshot_20200419-073537_Minds](/uploads/4a8620be69051f4a0f199787c5067840/Screenshot_20200419-073537_Minds.jpg)

Story points: 1.0
Reonboarding bugs

- no thanks step doesnt work
- phone validation button takes 2 taps
- location must autosuggest (this part still needs to be figured out how we want to do this with or without google)
- just try it it doesnt work

![Screenshot_20200418-224706_Minds](/uploads/bfa38716e2dd527c318f27a9fe48a529/Screenshot_20200418-224706_Minds.jpg)

![Screenshot_20200418-224514_Minds](/uploads/3ade58174d4bf16c140c2725c6d54a0a/Screenshot_20200418-224514_Minds.jpg)

![Screenshot_20200418-224552_Minds](/uploads/d6385a6899f80a8eea77d5a56ce67d7f/Screenshot_20200418-224552_Minds.jpg)

Story points: 5.0
Channel Owner Edit mode

https://design.minds.com/hosted/mobile/michael/mobile%23-channel/#artboard1

When the owner clicks the edit channel button

Take them to the Edit Channel screen

https://design.minds.com/hosted/mobile/michael/mobile%23-channel/#artboard7

Using the same styles and editors in Settings, provide the sub navigation to edit the channel

- [ ] Display name (required)
- [ ] Location (location picker, optional)
- [ ] Date of Birth (optional)
- [ ] Bio (optional
- [ ] Back button should go back out to the previous level until back to the channel page
- [ ] Save should update the channel information with validation
- [ ] Light mode / dark mode
- [ ] Unit tests / E2E tests

Story points: 8.0
Boost redesign phase 1

- Redesign "Boosted" text+icon on boosted posts
- Redesign boost settings (Open boost, Hide/Show boost, About Boost)
- Move boostfeed to discovery
- Make the boost rotator arrows circular buttons on the right and left of the boost

![boosted](/uploads/8908ca8d34bab0499d9969f8b96aa900/boosted.PNG)


Story points: 1.0
Update the record button to use the new designs for Mobile Compose video

Big red record button
https://design.minds.com/hosted/mobile/michael/mobile%231687-composer/#artboard1


Stop recording
https://design.minds.com/hosted/mobile/michael/mobile%231687-composer/#artboard1

Do we need some sort of animation for the hold to record function @michaelfbradley and @ottman

Story points: 1.0
Push notifs list still wrong and shows buggy on bottom

Which of these actually are relevant? 

https://zulip-uploads.s3.amazonaws.com/4036/5C_it1aLDCbrUsgqF92hduro/Screenshot_20200408-212455_Minds.jpg?Signature=m8Toc9VoRtMqbAi0lI36U1SZQ%2B4%3D&Expires=1586536923&AWSAccessKeyId=AKIAIEVMBCAT2WD3M5KQ

@jotto141

Story points: 1.0
Notifications shows empty message before it has loaded

<!---
Please read this!

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "T - Bug" label and verify the issue you're about to submit isn't a duplicate.
--->

### Summary

The notifications empty message shows whilst still loading

### Steps to reproduce

Clear caches and navigate to notifications tab.

### Platform information

All platforms

### App version

4.1.x branch

### Possible fixes

Have the empty message acknowledge the loading state

Story points: 1.0
In nav both sub counts link to subscribers


### Summary

On the new settings screen, the subscribers and subscriptions link go to the same list of subscribers

### Steps to reproduce

Go to your channel
Underneath you user info, you'll see the count of subscribers and subscriptions. Subscriptions goes to the wrong page

### Platform information

All mobile

### App version

4.1.0 

### What is the current *bug* behavior?

Subscriptions goes to the wrong page

### What is the expected *correct* behavior?

Subscriptions goes to list of subscriptions

![image](/uploads/d2aa4ff0d65e9ebd013d7a7b218888c4/image.png)

### Relevant logs and/or screenshots

(Paste any relevant logs - please use code blocks (```) to format console output,
logs, and code as it's very hard to read otherwise.)

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

/label ~"T \- Bug" ~"S \- Triage:new"


Story points: 1.0
Group Bar does not update when you join Groups

### Summary

Group Bar does not update when you join groups

### Steps to reproduce

1. Use a discovery search to join groups.

### Platform information

Android 9, Samsung 9

### App version

4.1.0

### What is the current *bug* behavior?

Group Bar does not update when you join groups

### What is the expected *correct* behavior?

Group Bar should update when you join or leave groups

### Relevant logs and/or screenshots

Join a bunch of groups:
![Screenshot_20200408-140930_Minds](/uploads/7225ee84688d4b65e4cca59455a6f036/Screenshot_20200408-140930_Minds.jpg)

Group bar not updated:
![Screenshot_20200408-140923_Minds](/uploads/21095d7c3e2e74ffcbbd55cc8006027d/Screenshot_20200408-140923_Minds.jpg)

Story points: 2.0
Blue Verify you Email banner missing

### Summary

No verify your email banner on new channels.

### Steps to reproduce

1. Create a new channel

### Platform information

Android 9, Samsung 9s

### App version

4.1.0

### What is the current *bug* behavior?

No verify your email banner

### What is the expected *correct* behavior?

Verify your email banner should show for unverified accounts.

Story points: 2.0
Anchor Post Options to bottom behind keyboard

### Summary

On devices with keyboard that take up 33% of screen you cannot see description when image is attached, title is written and keyboard is up. Temporary solution anchor post options to bottom of screen, hidden behind keyboard so there is room to see what you are typing when typing a description. 

### Steps to reproduce

1. Use new composer to write a post with an image.
2. Write a title.
3. Attempt to write a description

### Platform information

Android 9, Galaxy 9s

### App version

4.1.0 rc3

### What is the current *bug* behavior?

Cannot see description you are typing.

### What is the expected *correct* behavior?

Hide postoptions behind keyboard so there is room to see what description you are typing.

### Relevant logs and/or screenshots

![image](/uploads/ed6738cde975b3162c95aa91b91d2ac6/image.png)


Relates to issue https://gitlab.com/minds/design/-/issues/21

Story points: 1.0
Implement the main mobile channel screen

Implement the main channel screen

https://design.minds.com/hosted/mobile/michael/mobile%23-channel/

When a user navigates to the new channel screen 

- [ ] It should be behind the "channel" feature flag on the backend
- [ ] Action buttons for meatball menu, wire, message if a subscriber, subscribe and unsubscribe button
- [ ] Subscribers count and Subscriptions count should go to the lists of subscribers and subscriptions (new screens in this epic)
- [ ] Channel name and badges, handle
- [ ] Description should fit to the screen with a linear gradient fade so the description text looks parallax and scroll
- [ ] Feed tabs
- [ ] Scroll list of the channel's feed with the new shared filter control
- [ ] Don't worry about the shop tab, it will come next sprint
- [ ] About tab with all the channel info
- [ ] DOB if they are the channel owner
- [ ] Subscribers, groups and subscriptions should all go to the appropriate list screen
- [ ] Light / Dark mode
- [ ] Unit tests and e2e tests

Story points: 24.0
Soft lock state Wiring tokens


### Summary

If you hit the back button when selecting a wallet when wiring tokens you can softlock yourself out of wiring tokens.

### Steps to reproduce

1. Start wiring tokens
2. select an amount of tokens to wire and submit
3. on the wallet select screen hit the back button
4. infinite loading circle, close wiring
5. attempt to wire again and you will error out.

### Platform information

Android 9

### App version

4.0.3

### What is the current *bug* behavior?

Locked out of wiring

### What is the expected *correct* behavior?

back button should not cause a cascade of errors.

### Relevant logs and/or screenshots

![wire_lock_out](/uploads/3d78bb73df76e5424525cdae60be745e/wire_lock_out.mp4)

Story points: 4.0
Check link regex to match browser behavior with emojis.

### Summary

Browser app will detect urls with an emoji in front of them without a space. Mobile will not detect the url.

### Steps to reproduce

1. Create a post with a url right after an emoji with no space.
2. Look at post in browser and in mobile app

### Platform information

Any

### App version

4.0.2

### What is the current *bug* behavior?

url is not detected if there is no whitespace in front of it

### What is the expected *correct* behavior?

url should be detected and link generated when there is an emoji in front of it.

### Relevant logs and/or screenshots

Browser

![image](/uploads/f2852317ace924adbef71b245fad6efb/image.png)

Mobile

![image](/uploads/f160224b60f68907ca6e9c01f3bc0060/image.png)

Story points: 4.0
Add autoplay video to mobile

We now have autoplay of videos on the front for pro / plus users

With the settings "enable autoplay" setting on in setting, videos should autoplay videos in activities.

- [ ] On feeds, one video should auto play with the sound muted while it is in the view port of the feed activities
- [ ] On individual media activities, the video should autoplay with the sound on (@ottman please, confirm if you want  single view to play with sound)
- [ ] Autoplay for our own videos and for embedded content


Story points: 2.0
Newsfeed image size issues

I suspect this is going to be a hard problem to solve consistently without rolling out a more adaptive layout system, but, this is a good place to start the conversation

@Johnthetester and Chesscats reported display issues with images on the feed. It's not just constrained to landscape mode. There's portrait mode images that overrun the view port as well.

![IMG_0CA149FECD66-1](/uploads/d88238a80613a82207e1d77dee37d139/IMG_0CA149FECD66-1.jpeg)

![IMG_159F912DC5C3-1](/uploads/6326efa1567505bbdc9b9f4e78995bfc/IMG_159F912DC5C3-1.jpeg)

This is, however, a hard problem.

If we scale portrait pictures down to fit in landscape, they will be very tiny and very narrow.

Same thing happens if we scale landscape photos down to fit on portrait, we will have a very tall viewport and a very thin and narrow image

Clipping and centering images so the post fits and so users can click through to see the whole thing might be the best way to solve this. But I'll defer to the @michaelfbradley @jotto141  and @ottman on how we want to address these layout issues.

Story points: 1.0
Discover top image feed refresh causes error

### Summary

Swipping up to refresh on a top image feed causes an error. 

### Steps to reproduce

1. Do a discovery feed of top images or videos to bring up a tile view.
2. Tap on any image in the tile view.
3. This brings up a top image feed, try to refresh the feed by swiping up.

### Platform information

Android 9

### App version

4.0.2 rc 1

### What is the current *bug* behavior?

 Error occurs when trying to refresh on top feed

### What is the expected *correct* behavior?

No error, maybe no refresh effect. I'm not sure a refresh makes sense in this context.

### Relevant logs and/or screenshots

![20200324_155334](/uploads/6c82cebb31440e60e1301840da020134/20200324_155334.mp4)

Story points: 2.0
Redesign the Wire Modals for Pay

The design needs to be finalized for this one. It's just for redesigning the wire modals as part one of the Minds pay

https://design.minds.com/hosted/mobile/michael/mobile%23-pay/#artboard1

Credit card carousel

We should have all the existing functionality.

If we're using a 3rd party library, we could have problems with a native code.

Story points: 8.0
TypeError: undefined is not an object (evaluating 't.item.username.toUpperCase')

Sentry Issue: [MOBILE-Z4](https://sentry.io/organizations/minds-inc/issues/1515413540/?referrer=gitlab_integration)

```
TypeError: undefined is not an object (evaluating 't.item.username.toUpperCase')
  File "src/messenger/MessengerScreen.js", line 198, in _renderElement
    testID={row.item.username.toUpperCase()}
  File "app:///[native code]", in ml
  File "app:///[native code]", in fl
  File "app:///[native code]", in callImmediates
  File "app:///[native code]", in value
...
(24 additional frame(s) were not displayed)
```

Whenever I search of `martin` in messenger, this crashes and throws up the white error screen (IOS, App v4.0.1)

Story points: 4.0