giseldo/neodataset huggingface dataset:
Harmonise list view UI through mobile app

## Goal

There are numerous instances of list views throughout the mobile app, however, they are largely inconsistent in look and feel. See blow.

<details><summary>Click to expand settings</summary>
![IMG_3550](/uploads/b5ddd972317aaae575d6cf18ff694ab9/IMG_3550.PNG)
</details>
<details><summary>Click to expand channel memberships</summary>
![IMG_3555](/uploads/696ad012866745ad5d2814c95e526281/IMG_3555.PNG)
</details>
<details><summary>Click to expand push notifications</summary>
![IMG_3556](/uploads/e8fb6abf3a3c35f2d38e6665e44b2724/IMG_3556.PNG)
</details>
<details><summary>Click to expand post options</summary>
![IMG_3551](/uploads/be190747a55deffd75ad090a93ee410b/IMG_3551.PNG)
</details>
<details><summary>Click to expand post license</summary>
![IMG_3552](/uploads/3ae9996c8481e9f0ca76e45e5292a574/IMG_3552.PNG)
</details>
<details><summary>Click to expand groups</summary>
![IMG_3553](/uploads/6b05302e9dd978582219957bb74d565a/IMG_3553.PNG)
</details>
<details><summary>Click to expand your tags [discovery]</summary>
![IMG_3554](/uploads/998ccb96f861ca515e0053793c0f6669/IMG_3554.PNG)
</details>

and more



## What needs to be done

- [x] Design exercise: Define a common design and approach for list views and add as a style guide component
- [ ] Development: Update any list view instances to align with the designs.


## QA

<!---
Consideration is given to how the issue will be demoed and tested prior to being deployed
--->


## UX/Design

#### Assets

* [List item types](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=1569%3A9965)
* [Your tags - Discovery](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=1569%3A11124)
* [Trending - Discovery](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=1569%3A10843)
* [Subscribers](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=1367%3A9434)
* [Push Notifications - Settings](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=1569%3A10327)
* [Boosted Content - Settings](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=1569%3A10537)
* [Sample light mode](https://www.figma.com/file/EkJej3mKP2lSzmWTLoqlXD/Minds-Design-System?node-id=1608%3A10378)

#### Notes
* Note the common spacing within each list item, regardless of its type.
* The designs are all provided in dark mode, bar one indicative light mode example.

## Personas

N/A

## Experiments

N/A

## Acceptance Criteria

- [ ] Consistent look and feel across all instances of the list component

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 8.0
Prefetch videos on the feed to improve UX

<!---
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

Improve the feed's UX by preloading the videos once the post is mounted

## What needs to be done

- Preload the videos when the post is mounted
- Keep the current functionality
- Ignore paywalled videos

## QA
TBD


## UX/Design
-


## Personas

It will improve the UX on the feeds by removing/reducing the delay when playing videos


## Experiments

-


## Acceptance Criteria

- [ ] It should keep the same functionality: The thumb must be shown until the video is played for the first time
- [ ] It should work correctly with paywalled videos
- [ ] It should handle errors correctly and try to load the video again 

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 3.0
(bug) When deactivating (deleting) account on phone, user should be also logged out

<!---
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

I tried deactivating account on phone, but there was a "zombie account" left behind - see screenshot.

### Steps to reproduce

1. Be logged into multiple accounts
2. Deactivate one of the accounts (I only tried deactivate, not delete, but my guess is, it would be the same thing)
3. Deactivated account will stay in list as "empty @" account
4. Try logging out from that account - not possible

### Platform information 

iPhone App

### What is the current *bug* behavior?

Zombie account is left behind.

### What is the expected *correct* behavior?

User gets logged out from deactivated account.

### Relevant logs and/or screenshots

![image](/uploads/301f81b76deb6623b947b8e5e2f79e15/image.png)

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

Story points: 3.0
Error submitting the app to apple



### Summary

Getting an error when submitting the app to apple

"The app references non-public selectors in Payload/Minds.app/Minds: estimatedProgress, initWithFrame:configuration:, initWithURL:configuration:, initWithURL:entersReaderIfAvailable:, isMainFrame, navigationType, onSuccess:, setNavigationDelegate:, setProcessPool:, targetFrame, userContentController, viewManager, websiteDataStore With error code STATE_ERROR.VALIDATION_ERROR.50 for id dd7e0875-cf36-4c35-908e-ee26620bf52f"



### Relevant logs and/or screenshots
On the email I got:

" ITMS-90338: Non-public API usage - The app references non-public selectors in Minds: estimatedProgress, initWithFrame:configuration:, initWithURL:configuration:, initWithURL:entersReaderIfAvailable:, isMainFrame, navigationType, onSuccess:, setNavigationDelegate:, setProcessPool:, targetFrame, userContentController, viewManager, websiteDataStore,The app references non-public selectors in PlugIns/Share.appex/Share: estimatedProgress, initWithFrame:configuration:, initWithURL:configuration:, initWithURL:entersReaderIfAvailable:, isMainFrame, navigationType, onSuccess:, setNavigationDelegate:, setProcessPool:, targetFrame, userContentController, viewManager, websiteDataStore. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/ "

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

Story points: 3.0
Cannot read property includes of undefined on production build



### Summary

Error [TypeError: Cannot read property 'includes' of undefined] thrown on iOS

### Steps to reproduce

Error display on app start up

### Platform information 

iOS

### What is the current *bug* behavior?

Error shown

### What is the expected *correct* behavior?

The app must start without showing any error

### Relevant logs and/or screenshots

![Screen_Shot_2022-06-02_at_11.26.38](/uploads/2f6d0833d8715c7ca191b1725c20fa22/Screen_Shot_2022-06-02_at_11.26.38.png)

### Possible fixes

TBD

Story points: 2.0
(bug) Message "This comment is NSFW on iOS" on Android device

<!---
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

User Dannica is getting error message "This comment is NSFW on iOS", but she has android.

source: https://www.minds.com/newsfeed/1377778276260384782

### Steps to reproduce

(How one can reproduce the issue - this is very important)

### Platform information 

Samsung Galaxy A32 5G

### What is the current *bug* behavior?

it shows the message "This comment is not safe for work and cannot be accessed via iOS"

### What is the expected *correct* behavior?

The warning should say: This comment is not safe for work

### 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: 0.0
(bug) User can't close "Build your algorithm"

<!---
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

User can't close "Build your algorithm" on Android 12

source: https://www.minds.com/newsfeed/1374742335597842445

### Steps to reproduce

(How one can reproduce the issue - this is very important)

### Platform information 

Android 12

### What is the current *bug* behavior?

(What actually happens)

### What is the expected *correct* behavior?

(What you should see instead)

### 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: 1.0
Regression: Back Button not working on some bottomsheets

<!---
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

We appear to have a new regression with the back buttons and they don't seem to be working properly. Some instances of this can be seen at Composer->PosterOptions, SubscriberBottomSheet (channel recs -> see more), and ChooseBrowser prompt. There are possibly more instances, we have to figure out what has gone wrong.

### Steps to reproduce

Visit the mentioned screens and notice the back button isn't functioning well.

### Platform information 

tested on Android.

### What is the current *bug* behavior?

back button not working

### What is the expected *correct* behavior?

should work

### 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.)

![image](/uploads/9a685e5dac6ec69e023f367daa2c1862/image.png)

![image](/uploads/fad6430d44ef9aa89ca216dbeed0dd23/image.png)

![image](/uploads/8d909b1a7e4b73967140326aa419a9a9/image.png)

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

Story points: 3.0
Mutual Channel Subscriptions [mobile]

## Goal

Give channels validation by surfacing any mutual subscriptions to the user. It is a reasonable to believe that users should be more likely to subscribe where their peers are already subscribers. 


## What needs to be done

- [x] Provide designs
- [x] Review designs
- [ ] Get agreement on the logic detailed within the acceptance criteria
- [ ] Run by one of the mobile devs to get any useful feedback


## QA

TBC


## UX/Design

- [Prototype Mobile](https://www.figma.com/proto/WMrvIQMlt2aiXcMsedfvGZ/Channel-%5BMobile%5D?page-id=0%3A1&node-id=1%3A1482&viewport=4810%2C973%2C1&scaling=min-zoom&starting-point-node-id=1%3A1482)

- https://www.figma.com/file/WMrvIQMlt2aiXcMsedfvGZ/Channel-%5BMobile%5D?node-id=1%3A1482


## Personas

TBC


## Experiments

* Not sure if we need to run any experiments here @markryansallee - The basic hypothesis is that users will be more likely to subscribe to channels that their peers already to subscribe to. This is nonetheless a low-risk feature, so perhaps it would be best simply to gather metrics on subscriptions where there mutual subscriptions are displayed, and make the feature available to all. 


## Acceptance Criteria

* Displays only where there are one or more mutual subscriptions (a mutual subscription is where a channel is subscribed to by a channels that the current user subscribes to)
* Will not display when a user is viewing their own channel
* Will display whether a user is subscribed / not subscribed to the channel being viewed.
* A maximum of three avatars will display at any one time.
* Tapping anywhere on the component will launch a modal with all relevant channels.
* Copy: The area here is quite limited so we need to be selective with the language.
  * \[1 mutual subscription\] @channelA is subscribed
  * \[2 mutual subscriptions\] @channelA and @channelB are subscribed
  * \[3 mutual subscriptions\] @channelA, @channelB and 1 other is subscribed
  * \[4+ mutual subscriptions\] @channelA, @channelB and 2 others are subscribed etc.

- [ ] Copy implementation of https://gitlab.com/minds/front/-/merge_requests/1962 (pay attention to language)

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [x] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [x] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 5.0
Move iOS builds to gitlab



## Goal

Move all the iOS CI jobs to Gitlab to simplify our development workflow and keep all in one CI provider

## What needs to be done

Move the jobs to Gitlab CI using the new macOS beta containers
- [ ] Make review builds for MRs and upload them to BrowserStack 
- [ ] Make production builds for the development branch and upload them to TestFlight 
- [ ] Make production builds for the master branch and upload them to the app store 


## QA

CI should make builds correctly


## UX/Design

None


## Personas
Improve development workflow


## Experiments

none

## Acceptance Criteria

- [ ] Make review builds for MRs and upload them to BrowserStack 
- [ ] Make production builds for the development branch and upload them to TestFlight 
- [ ] Make production builds for the master branch and upload them to the app store 

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 5.0
Automation: Create more Login Page tests

## Goal

Currently, we have only one test for successful login. Add more tests to cover login page. 


## What needs to be done

More tests for login page that work on Android & iOS.


## QA

Tests should pass on browserstack consistently.


## UX/Design

N/A

## Personas

N/A


## Experiments

N/A


## Acceptance Criteria

- [x] Android & iOS
- [ ] Invalid credentials
- [ ] Empty credentials
- [ ] Banned/Deleted Account

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [x] Acceptance criteria
- [ ] Weighted
- [x] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 3.0
Navigation Service error



### Summary

Seems like in some cases the push notification navigator is trying to navigate before the navigation is ready

https://sentry.io/organizations/minds-inc/issues/2775482580/?project=1766867


### Steps to reproduce

Tap on a push notification

### Platform information 

Both

### What is the current *bug* behavior?

Check sentry error

### What is the expected *correct* behavior?

It should navigate to the correct screen

### Relevant logs and/or screenshots

https://sentry.io/organizations/minds-inc/issues/2775482580/?project=1766867

### Possible fixes

Check that the push navigator is fired after the nav is ready

Story points: 3.0
Implement new workflow on the CI



## Goal

Improve and simplify our development/release workflow.

 - A more streamlined workflow
 - Single development branch
 - Simplify patch releases
 - Simple code push patch releases

![Screen_Shot_2022-05-20_at_11.35.22](/uploads/46d43e1b08fbeae83fa43bad275e3b87/Screen_Shot_2022-05-20_at_11.35.22.png)

![Screen_Shot_2022-05-20_at_11.36.00](/uploads/9b452ca27e5bfec59e6baa43e1f35cad/Screen_Shot_2022-05-20_at_11.36.00.png)

![Screen_Shot_2022-05-20_at_11.36.49](/uploads/15c87dd1c9e6ecb5f216db8ae1fe1435/Screen_Shot_2022-05-20_at_11.36.49.png)

![Screen_Shot_2022-05-20_at_11.42.51](/uploads/6531e493881ce29a07565324c1a3be1d/Screen_Shot_2022-05-20_at_11.42.51.png)

## What needs to be done

- Create a script to get the version from the APK or gradle.properties file/
- Ideally, move the iOS build to gitlab
- Create a fast lane step to deploy directly to the app store (upload_to_app_store)
- Change the CI to match the new workflow:
  - MR branches: `feat/*` `chore/*` `fix/*` `refactor/*`
    - Spec tests
    - e2e?
    - Review app build (dev tools enabled by default)
    - Deploy to Browserstack for QA
  - Development branch: `development`
    - Spec tests
    - e2e?
    - Production build
    - Deploy to Browserstack, S3, TestFlight?
  - Master branch: `master`
    - Spec tests
    - Production build
    - Deploy to the Android Stores and Appstore
  - Codepush patch branchs: `patch/*` (Only JS patch)
    - Spec tests
    - e2e?
    - Production build
    - Deploy to Browserstack, S3, TestFlight
    - CodePush release for both platforms
  - Native patch branchs: `release/x.x.1`
    - Spec tests
    - e2e?
    - Review app build (dev tools enabled by default)
    - Deploy to Browserstack for QA, S3, TestFlight (manual)

## QA

TBD

## UX/Design

none


## Personas

It will simplify our workflow allowing us to 

## Experiments

none


## Acceptance Criteria

- [ ] The CI should match the new workflow

## Definition of Ready Checklist

- [ ] Definition Of Done (DoD)
- [ ] Acceptance criteria
- [ ] Weighted
- [ ] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 5.0
Mobile Automation: Add registration test cases

## Goal

Add test for registration feature on mobile


## What needs to be done

Create webdriverio tests for Android & iOS:
- [ ] Successful registration with captcha experiment support
- [ ] Empty fields error cases - Username, Email, Password
- [ ] Incorrect credentials
- [ ] TOS checkbox
- [ ] Promotions checkbox
- [ ] Channel name exists
- [ ] Blocked/Banned Channel Reset Password


## QA

Make sure all tests pass on browserstack - Android & iOS


## UX/Design

N/A


## Personas

N/A

## Experiments

Experiment already set


## Acceptance Criteria

- [ ] Android tests pass on Browserstack
- [ ] iOS tests pass on Browserstack

## Definition of Ready Checklist

- [x] Definition Of Done (DoD)
- [x] Acceptance criteria
- [ ] Weighted
- [x] QA
- [ ] UX/Design
- [ ] Personas
- [ ] Experiments

Story points: 3.0
iOS random crashes because of expo video error


### Summary

Random app crashes on iOS (latest release candidate 4.24.0)

https://sentry.io/organizations/minds-inc/issues/3283451672/?project=1766867&query=is%3Aunresolved&statsPeriod=14d

It seems to happen when scrolling the feed deep or switching users (Unable to reproduce on iPhoneXR)

Probably reported & fixed on https://github.com/expo/expo/issues/16982#issuecomment-1097515627

Related issue https://github.com/expo/expo/issues/15329

### Steps to reproduce

Switch users and scroll the feed (Try with autoplay turned on)

### Platform information 

iOS

### What is the current *bug* behavior?

App crash

### What is the expected *correct* behavior?

Not crash

### Relevant logs and/or screenshots
https://sentry.io/organizations/minds-inc/issues/3283451672/?project=1766867&query=is%3Aunresolved&statsPeriod=14d

### Possible fixes

Probably updating expo-av may fix the issue

Story points: 2.0
403 errors should not be logged on sentry


### Summary

We are not logging network errors to sentry but somehow the 403 are being logged. This is is by far the most reported issue on sentry

https://sentry.io/organizations/minds-inc/issues/1988402087/?project=1766867&query=is%3Aunresolved

### Steps to reproduce

Check sentry

### Platform information 

Both

### What is the current *bug* behavior?

It is reporting 403 to sentry

### What is the expected *correct* behavior?

It must not report 403 to sentry

### Relevant logs and/or screenshots

https://sentry.io/organizations/minds-inc/issues/1988402087/?project=1766867&query=is%3Aunresolved

### Possible fixes

Check error reporting logic

Story points: 2.0
Implement a month selector using the bottom sheet and the modern date picker


## Goal

Implement a new month selector using the bottom sheet and the modern date picket packages. 
This is needed to update to the new version of react-native (the previous package is incompatible)
And it will also improve the UI as the current component doesn't have the same look&feel as the rest of the app


Related issue
https://gitlab.com/minds/mobile-native/-/issues/4040


## What needs to be done

Implement a new generic month selector and replace the wallet->earnings selector

## QA

:warning: Test with the builds for the branch chore/update-rn-0.68 (It was merged on the RN update) :warning:

* open wallet
* earnings tab
* select a month
* the month picker should function flawlessly

## UX/Design

No design necessary

## Personas

It will improve the month selector component and allow us to update to the latest RN version


## Experiments
none


## Acceptance Criteria

- [ ] Should use the bottom sheet
- [ ] Should have the same look and feel as the DateTimePicker component
- [ ] Should replace `react-native-month-year-picker` on the wallet screen

## Definition of Ready Checklist

- [x] Definition Of Done (DoD)
- [x] Acceptance criteria
- [ ] Weighted
- [x] QA
- [x] UX/Design
- [x] Personas
- [x] Experiments

Remi

Story points: 3.0
Channel: InteractionsBottomSheet opening on Android on back navigation

<!---
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 interactions bottom sheet gets opened in the channel screen the following scenario:

### Steps to reproduce

- go to a channel screen
- click on Wire (dollar sign)
- select the amount input so the keyboard is opened
- now go back
- notice the interactions bottom sheet is opened

### Platform information 

noticed on Android.

### What is the current *bug* behavior?

the interactions bottom sheet is opened unintentionally and only half-way.

### What is the expected *correct* behavior?

shouldn't open

### 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.)

![Screen_Shot_2022-05-18_at_12.06.42](/uploads/ea73e74eac86b1b4cbe1411db3868add/Screen_Shot_2022-05-18_at_12.06.42.png)

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

Story points: 3.0
The text of the email verification screen is almost invisible on the dark theme



### Summary

The text of the email verification screen is almost invisible on the dark theme

### Steps to reproduce

Tap an email verification link

### Platform information 

Both

### What is the current *bug* behavior?

Text is dark grey over a dark background

### What is the expected *correct* behavior?

The text should be visible (enough contrast)

### Relevant logs and/or screenshots

![Screen_Shot_2022-05-17_at_11.01.18](/uploads/ed1ac7f4aa5d73e36eaec5e016a84652/Screen_Shot_2022-05-17_at_11.01.18.png)

### Possible fixes

Change colors

Story points: 1.0