giseldo/neodataset huggingface dataset:
Live Interactions

<!---
Please read this!

The Definition of Ready (DoR) can be found at https://developers.minds.com/docs/handbook/how-we-work/#definition-of-ready-dor

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "Type::Feature" label and verify the feature you're about to submit isn't a duplicate.
--->

## Goal

<!---
Clearly outline the goal of the issue and why we are doing it
--->

Implement live updating metrics on posts to increase real-time engagement

Mobile implementation of https://gitlab.com/minds/engine/-/issues/1218

## What needs to be done

<!---
Clearly detail what needs to be done to achieve the goal set out above
--->

Subscribe to socket.io topic of entity

## QA

<!---
Consideration is given to how the issue will be demoed and tested prior to being deployed
--->

TBD

## UX/Design

<!---
Sufficient wireframes have been presented and understood by the development team. Full mockups are not required and re-usable components are encouraged.
--->

N/A

## Personas

<!---
Who does this user impact and why (optional)
--->

Consumers

## Experiments

<!---
Experiments are not required, but it should be made clear if one is expected. If experiments are required, the hypothesis should be outlined.
--->

Required

## Acceptance Criteria

<!--
Everyone should be able to understand what is expected to be delivered
--->

- [ ] Subscribe to metric updates efficiently

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 5.0
setVisible of null error on 4.27.0 RC



### Summary

`setVisible` of null error

This is probably a regression of the new feed implementation (maybe the injected items)

### Steps to reproduce

Not clear, probably after switching channels

Ben - Found consistent replication steps while QAing on Browserstack:

1. Make a blank search
2. Change filters between video, image etc

### Platform information 

Both

### What is the current *bug* behavior?

It throws an error

### What is the expected *correct* behavior?

No error

### Relevant logs and/or screenshots

https://sentry.io/organizations/minds-inc/issues/3493967200/?project=1766867&query=is%3Aunresolved

### Possible fixes

Check that setVisible exists before call it, but we should check why is it failing

Story points: 2.0
"Subscribers you know" renders twice

<!---
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 "Subscribers you know" component on the channel gets mounted twice when the channel screen opens

### Steps to reproduce

open any channel, look at the "Subscribers you know" component

### Platform information 

all

### What is the current *bug* behavior?

gets rendered twice

### What is the expected *correct* behavior?

should only get rendered once

### Relevant logs and/or screenshots

![Simulator_Screen_Recording_-_iPhone_13_-_2022-08-12_at_15.28.47](/uploads/13f5ef0f81662175d213e1f3d42db606/Simulator_Screen_Recording_-_iPhone_13_-_2022-08-12_at_15.28.47.mp4)

### Possible fixes

I think the whole ChannelHeader, or ChannelScreen is being rerendered here. We should check.

Story points: 2.0
Add extra attributes to growthbook


## Goal

To allow more control over the experiment segmentation


## What needs to be done

Add attributes to growthbook:
- App version
- Platform

## QA

TBD


## UX/Design

-


## Personas

More control over FF for developers

## Experiments

-

## Acceptance Criteria

- [ ] It should add at least the app version and platform

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 1.0
Refresh indicators are behinnd the header

<!---
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 refresh indicators are shown behind the floating header

### Steps to reproduce

Refresh the newsfeed

### Platform information 

Android

### What is the current *bug* behavior?

The refresh indicators are shown behind the floating header

### What is the expected *correct* behavior?

The refresh indicators should be shown on top

### Relevant logs and/or screenshots
![imagen](/uploads/f95dbae97bfc0dcf76dc0c18a5973d93/imagen.png)

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

Story points: 2.0
Sound loops but video freeze on iOS



### Summary

After finish playing a video the sound loops but the image freezes

### Steps to reproduce

Play a video until it finishes

### Platform information 

iOS Devices (Not happening on the simulator)

### What is the current *bug* behavior?

sound loops but the image freezes

### What is the expected *correct* behavior?

If the repeat option is turned on it should loop video & sound or none of them otherwise

### Relevant logs and/or screenshots

-

### Possible fixes

TBD

Story points: 2.0
Password mask not working on Android



### Summary

Password mask not working on Android

### Steps to reproduce

Open password or register screen

### Platform information 

Android

### What is the current *bug* behavior?

Password is not masked

### What is the expected *correct* behavior?

(What you should see instead)

### Relevant logs and/or screenshots

![Screen_Shot_2022-08-10_at_15.41.06](/uploads/c3f81aa4a5f1cf2abeb8e561e9a195fc/Screen_Shot_2022-08-10_at_15.41.06.png)

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

Story points: 1.0
Improve the startup speed and initial memory consumption by lazy loading screens



## Goal

Improve the startup speed and initial memory consumption by lazy loading screens.

The metro bundler has an `inline require` that lazy loads the modules and a babel plugin that transforms the imports into inline requires when possible. 
Seems like this babel module is not working or it is not transforming the imports for the screens.


## What needs to be done

Use inline requires for the screens


```js
import PhoneValidationScreen from '../onboarding/v2/steps/PhoneValidationScreen';
<RootStackNav.Screen
   name="PhoneValidation"
   component={PhoneValidationScreen}
/>
```

```js
<RootStackNav.Screen
   name="PhoneValidation"
   getComponent={() =>
     require('../onboarding/v2/steps/PhoneValidationScreen').default
   }
/>
```

## QA

TBD


## UX/Design

none


## Personas

UX improved reducing the app startup time

## Experiments
none


## Acceptance Criteria

- [ ] App should lazy load the screens
- [ ] functionality should not be affected

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

La

Story points: 1.0
Text the text does not fit the notices button



### Summary

The text of the button doesn't fit on some devices

![Screen_Shot_2022-08-09_at_09.34.46](/uploads/fd7e7904e64a39ce238abec712650bad/Screen_Shot_2022-08-09_at_09.34.46.png)

### Steps to reproduce

Device S20

### Platform information 

Android

### What is the current *bug* behavior?

-

### What is the expected *correct* behavior?

-

### Relevant logs and/or screenshots

-

### Possible fixes

- Reduce the text length
- Increase button size
- Use adjust text size property (It may mess the alignment)

Story points: 2.0
No client-side username length validation

<!---
Please read this!

The Definition of Ready (DoR) can be found at https://developers.minds.com/docs/handbook/how-we-work/#definition-of-ready-dor

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "Type::Feature" label and verify the feature you're about to submit isn't a duplicate.
--->

## Goal

Smoothen onboarding experience 

## What needs to be done

Have client-side validation for username length - currently user has to fill a CAPTCHA before they see the message, then count characters manually.

![image](/uploads/4bb09595923f46bb48251914bd03668d/image.png)

## QA

Test usernames minimum and max length

## UX/Design

Unsure if needed?

## Personas

Registering users

## Experiments

N/A

## Acceptance Criteria

- [ ] Client-side username length validation

## Definition of Ready Checklist

- [x] Definition Of Done (DoD)
- [x] Acceptance criteria
- [ ] Weighted
- [x] QA
- [x] UX/Design
- [x] Personas
- [x] Experiments

Story points: 1.0
Clustered recomendations are showing same posts



### Summary

Discovery top feed is always showing the same posts

### Steps to reproduce

Refresh the discovery top feed

### Platform information 
both

### What is the current *bug* behavior?

Showing same posts

### What is the expected *correct* behavior?

seen should not be shown

### Relevant logs and/or screenshots

-

### Possible fixes

check params

Story points: 2.0
Investigate a permanent solution for the crop image picker on Android



### Summary

The crop image picker is randomly resetting the application after selecting a new image (when it tries to navigate to the crop activity)

I researched a little about this and even tried to migrate it to the expo-image-picker, but it also suffers from the same issue. It seems to be an Android issue that is killing the activities to save resources.

If no solution is found we will have to implement a camera screen with a crop functionality in-app

### Steps to reproduce

It happens when trying to take a picture for the avatar (Currently disabled on Android as a temporary solution)

### Platform information 

Android

### What is the current *bug* behavior?

app restart

### What is the expected *correct* behavior?

move to crop screen

### Relevant logs and/or screenshots

Related to https://github.com/facebook/react-native/issues/30277

### Possible fixes

Check if the current expo is solving the issue and if there's an alternate solution at hand (new version of the image picker).

Story points: 5.0
MR builds for iOS should be on review mode



## Goal

The iOS builds for the MR branches should be on `review` mode

## What needs to be done

ensure ENV is set properly

## QA

Check that the dev options are visible from the beginnig


## UX/Design

-


## Personas

-


## Experiments

-


## Acceptance Criteria

- [ ] App in review mode for those cases

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 2.0
Android: Editing picture on Channel Avatars restarts the app

### Summary

Taking a picture via camera and editing it, restarts the minds app on Android. 

### Steps to reproduce

1. Open minds app.
2. Sign up as a new user.
3. Go to Onboarding "Complete to earn token".
4. Tap on Setup Channel.
5. Upload avatar image by taking a photo.
6. Try to edit it; restarts minds app.

### Platform information 

Android

### What is the current *bug* behavior?

App restarts.

### What is the expected *correct* behavior?

App should be able to edit image.

Story points: 3.0
Redirect new user to discovery (FF)



## Goal

Redirect new registered users to discovery behind an experiment (https://gitlab.com/minds/minds/-/issues/2869)

## What needs to be done

Add an experiment to change the redirection after selecting the tags

## QA

Behind the FF mob-discover-redirect

## UX/Design

-


## Personas

New users


## Experiments

mob-discovery-redirect (50/50)


## Acceptance Criteria

- [ ] It should redirect to discovery top if the experiment is on

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 2.0
"Subscribers you know" list

<!---
Please read this!

The Definition of Ready (DoR) can be found at https://developers.minds.com/docs/handbook/how-we-work/#definition-of-ready-dor

Before opening a new issue, make sure to search for keywords in the issues
filtered by the "Type::Feature" label and verify the feature you're about to submit isn't a duplicate.
--->

## Goal

<!---
Clearly outline the goal of the issue and why we are doing it
--->

Now we have 'also subscribed to' blocks on channels, we want to expand to be able to see more than 2 results. 

## What needs to be done

<!---
Clearly detail what needs to be done to achieve the goal set out above
--->

We already have a modal that displays for subscribes on notifications, this is just a time ordered list. Modify this modal to support mutual 'also subscribed to'. The backend needs a slight tweak to support pagination.

## QA

<!---
Consideration is given to how the issue will be demoed and tested prior to being deployed
--->

The modal display when relevant.

## UX/Design

<!---
Sufficient wireframes have been presented and understood by the development team. Full mockups are not required and re-usable components are encouraged.
--->

?

## Personas

<!---
Who does this user impact and why (optional)
--->

Subscribers.

## Experiments

<!---
Experiments are not required, but it should be made clear if one is expected. If experiments are required, the hypothesis should be outlined.
--->

M/A


## Acceptance Criteria

<!--
Everyone should be able to understand what is expected to be delivered
--->

- [ ] Click on the component will launch a modal (same as what is currently used to display who up-voted a post) and list any mutual subscriptions, or redirect to a channel.
  * [ ] clicking directly on a channel handle will direct the user to that channel
  * [ ] clicking on `x others` or any of the avatars will launch a the modal.
- [ ] Backend to support pagination. ie `LIMIT 12,20` in the SQL statement will offset to 20-32 results.

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 3.0
Implement mobile navigation header and footer

Implement the new native designs for the nav bar

This should be behind the new navigation feature flag setup for the front end

This card is to set up the new look and feel for the new mobile designs

https://projects.invisionapp.com/d/main#/console/18532170/400085462/preview

Top nav
- [x] New title on the top left
- [x] Messenger icon with notifications
- [x] Search button

Bottom nav
- [x] Home button
- [x] Channel button
- [x] + add new activity button
- [x] Notification icon
- [x] hamburger menu

Overall design
- [x] Light mode
- [x] Dark mode

Story points: 8.0
Implement the avatar upload designs for the new onboarding

The profile screens for the mobile native onboarding need to have an avatar upload

- [ ] Design the new avatar upload
- [ ] Implement the new designs using the existing functionality for avatar upload on mobile native

We now have mocks for this:
https://design.minds.com/hosted/mobile/michael/mobile%23-registration/
https://design.minds.com/hosted/mobile/michael/mobile%23-registration/#artboard6
https://design.minds.com/hosted/mobile/michael/mobile%23-registration/#artboard7


Story points: 2.0
Explicit tag not working on comments

Copying this over from front to make sure it's gets addressed in mobile
### Summary

If you tag a comment as explicit, the mask does not appear.

### Steps to reproduce

Write a comment, set it to E, then submit comment. No mask appears.

### Platform information

macbook, ios, chrome

### What is the current *bug* behavior?

see summary

### What is the expected *correct* behavior?

explicit comments should be displayed behind a mask

### 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)

Story points: 4.0
Error scrolling through old blogs from channel

t.getBannerSource is not a function. (In 't.getBannerSource()', 't.getBannerSource' is undefined)
STACK:

    in h
    in RCTView
    in o
    in RCTView
    in RCTScrollView
    in AndroidSwipeRefreshLayout
    in v
    in f
    in l
    in o
    in C
    in RCTView
    in n
    in inject-n-with-channel-subscriptionRequest
    in p
    in C
    in p
    in RCTView
    in RCTView
    in RCTView
    in s
    in RNSScreen
    in s
    in n
    in h
    in E
    in RNSScreenContainer
    in n
    in RCTView
    in s
    in PanGestureHandler
    in b
    in p
    in RCTView
    in P
    in k
    in C
    in h
    in p
    in RCTView
    in s
    in RNSScreen
    in s
    in n
    in h
    in E
    in RNSScreenContainer
    in n
    in RCTView
    in s
    in PanGestureHandler
    in b
    in p
    in RCTView
    in P
    in k
    in C
    in h
    in p
    in p
    in C
    in k
    in p
    in n
    in P
    in RCTView
    in RCTView
    in o

Story points: 4.0
This error should ask you to join the group!!!

+ [ ] Error message explains that you cannot interact with content because you are not a member of the group
+ [ ] Group Interaction error dialogue has link to join the group

![Screenshot_20191221-150401_Minds](/uploads/75ef999a3ccd471980990dc8ded2d6f2/Screenshot_20191221-150401_Minds.jpg)



Story points: 4.0
TypeError: JSON.stringify cannot serialize cyclic structures.

Sentry Issue: [MOBILE-6E](https://sentry.io/organizations/minds-inc/issues/1297245709/?referrer=gitlab_integration)

```
TypeError: JSON.stringify cannot serialize cyclic structures.
    at src/common/services/sql/entities.storage.(entities.storage.js:27)
    await this.db.executeSql('REPLACE INTO entities (urn, data, updated) values (?,?,?)', [entity.urn, JSON.stringify(entity), Math.floor( {snip}
...
(14 additional frame(s) were not displayed)
```

Story points: 4.0
Wireup mobile video player to the new api url

Rather than our browser redirect, use the new urls for the video transcodes on

https://www.minds.com/api/v2/media/video/1046209597367287808?

Note the direct sources in the responses of these new api calls.

Point the existing player to the new sources.

Make it play the lowest/fastest resolution possible without doing too much overhaul. We want it to work, but fast is good too.

Story points: 4.0
Implement the all done screen

New mocks https://projects.invisionapp.com/share/KWU1X9IEB2U#/screens/399136671

When a user completes their onboarding profile

- [ ] display this page for 5 seconds
- [ ] Animate the transition to the main application and navigate to the existing home screen
- [ ] unit tests
- [ ] e2e tests

Story points: 2.0
Implement the Profile Setup - channels

Based on the user's selected hashtags, provide a list of channels from the top feeds api. 

New mocks: https://projects.invisionapp.com/share/KWU1X9IEB2U#/screens/399136672

- [ ] Do not display NSFW channels
- [ ] Implement the new design
- [ ] Provide a list of channels to select based on the top feeds
- [ ] Plus icon should remove the channel from an internal array
- [ ] Check icon should add the channel to an internal array
- [ ] Skip should take them to the new select channels screen without saving the channels
- [ ] Continue should take them to the new select channels page and subscribe the user to the channels
- [ ] unit tests
- [ ] e2e tests

Story points: 4.0
Implement the new Profile setup groups screen

New mocks: https://projects.invisionapp.com/share/KWU1X9IEB2U#/screens/399136673

Based on the user's selected hashtags, provide a list of groups from the top feeds api. 

- [ ] Do not display NSFW groups
- [ ] Implement the new design
- [ ] Provide a list of groups to select based on the top feeds
- [ ] Plus icon should remove the group from an internal array
- [ ] Check icon should add the group to an internal array
- [ ] Skip should take them to the new select channels screen without saving the groups
- [ ] Continue should take them to the new select channels page and join  the user to the groups
- [ ] unit tests
- [ ] e2e tests

Story points: 8.0
Implement the new info screen

New mocks https://projects.invisionapp.com/share/KWU1X9IEB2U#/screens/399136674

Modal pop up here: https://projects.invisionapp.com/d/main#/console/18532170/392536386/preview

- [x] Implement the new design
- [x] Implement new popup that grows to fit the text 
- [x] Implement the phone number validation with displaying the country code icon / flag
- [ ] Continue should save optional location, phone number and date of birth to the user and go to step 3 of 4, Groups
- [x] Skip should got to Step 3 of 4, Groups
- [ ] e2e tests
- [ ] unit tests

Story points: 8.0
Implement the Profile Setup - hashtags

New mocks: https://projects.invisionapp.com/share/KWU1X9IEB2U#/screens/399136675
Note the new spacing
- [x] implement the new design
- [x] Populate the list with our popular hashtags coming from the existing api
- [x] Selecting hashtags and clicking continue should save the hashtags for the next step in the process
- [x] Skip should move to the next step in the process
- [x] Unit tests
- [ ] End to End tests

Story points: 4.0
Implement the new welcome to the onboarding screen

New mocks https://projects.invisionapp.com/share/KWU1X9IEB2U#/screens/399136676

- [x] Implement the new design
- [x] Display the username
- [x] Link "No thanks, I'll do it later" to the main activity page
- [x] Link "Lets get setup" to the "Hashtags" profile setup 
- [ ] e2e tests
- [ ] unit tests

Story points: 4.0
Implement the new login screen

New mocks: https://projects.invisionapp.com/share/KWU1X9IEB2U#/screens/399136674

This MR should go into a epic/onboarding

Since we don't have a mock for login, implement the same design as the signup screen

- [ ] new design for login
- [ ] new blue hyperlink for "create a channel" and "forgot password"
- [ ] language selector on the bottom
- [ ] login button should login

I am going to get ping @michaelfbradley about error messages in the mobile designs

Story points: 2.0
Implement the new signup screen

This MR should go into a epic/onboarding

New mocks 
https://projects.invisionapp.com/share/KWU1X9IEB2U#/screens/399136677

- [x] Validates username, email and password
- [x] Enforces password length requirements
- [x] Login link goes to the new login page
- [x] terms of use goes to the terms of use page
- [x] Enforces the "I have read checkbox...."
- [x] e2e tests
- [x] unit tests

Story points: 4.0
Display Email Confirmation information (mobile)

We're rolling out new user email confirmation on the backend and web. We need to have feature parity with Emi's front end work.

https://gitlab.com/minds/front/issues/2373#note_262027407

* [x] Show a banner if email address is not verified
* [x] Allow user to re-send email from such banner
* [x] Add note to Settings screen stating that email address should be confirmed
* [x] Re-trigger banner displaying when email is changed on Settings
* [x] Handle email confirmation deep link

https://gitlab.com/minds/front/issues/2373

Story points: 8.0