giseldo/neodataset huggingface dataset:
Wallet 2.0 Issues

### Simple
- [x] Off-chain wires are being listed in transaction ledger as On-Chain wires
- [x] Off-chain boosts are being listed in transaction ledger as On-chain boosts
- [x] Missing button to Buy ETH (should be a button to do so in the ETH settings)
- [x] The transaction type in the filter is not aligned with the word "Type" (see image)
- [x] Green and red arrows are not vertical center aligned in transactions tab
- [x] Change sentence in token balance section to read "Learn more about [Minds Tokens](https://minds.com/token) and our [Reward System](https://minds.com/rewards)"
- [x] Make text for estimated payout same size as Learn More about tokens - this is one of the more important pieces of information that users care about and it is very hard to see. it should stand out more.
- [x] Move "Transfer to On-Chain" button to underneath your off-chain balance (or just switch OnChain and OffChain placements)
- [x] Token overview graph shows off-chain only. either incorporate on-chain, or add text next to time filters that reads "Off-chain only"...should also make it more clear it is a graph of your balance
- [x] Match transaction table colors to mockups
- [x] Token balance equation alignment
- [x] Incorporate new theme colors
- [x] Shadowbox header tabs left scroll button overlapped by nav
- [x] Clicking on shadowbox header overflow scroll button (right) doesn't work reliably
- [x] Tab styles responsiveness
- [x] Empty tx table notice should not say "you don't have any token transactions yet" when it's empty because a filter was applied
- [x] Rewards popup styles don't match mockup
- [x] On-chain transfers should be displayed as a single transaction, not 2 (one debit and one credit)
- [x] Purchases show up in transaction ledger labeled "Transaction". This should say "Token Purchase" and feel free to spice it up with a cool icon if you find one and its easy, as the other types have icons

### Simple but requires thought
- [x] Ensure Pro earnings are detected with a link to your earning analytics
- [x] Add a few characters of BTC address, or a check mark, under Bitcoin tab if receiver address is set up, so there is something there. Looks awkward with nothing.

### Medium/scarce simplicity
- [x] Running total not working on token transactions
- [x] Running total not working on cash transactions


### Not completed, but extracted into other issues
- [x] Add time filter option into transaction ledger (and hide running totals when filter applied) (moved to https://gitlab.com/minds/front/-/issues/2759 because it's big enough to be its own issue)
- [x] When you click to Buy ETH, the flow directs you to the channel https://minds.com/checkout when it should take you to the SendWyre widget *Should be in a separate issue - @markeharding says he'll fix it*
- [x] Today's Daily Reward showing me I have not earned anything but I have received many votes, checkins, comments, etc. (moved to https://gitlab.com/minds/front/-/issues/2751)
- [x] ETH balance is reading 0 despite having MetaMask synced, connected and containing a balance (moved to https://gitlab.com/minds/front/-/issues/2750)

Story points: 16.0
CKEditor5 iframely linkup

Right now, we support ckeditors rich embed which gets us partly there. https://ckeditor.com/docs/ckeditor5/latest/features/media-embed.html#automatic-media-embed-on-paste

Define our own provider for our selected types and proxy them through engine.

https://ckeditor.com/docs/ckeditor5/latest/api/module_media-embed_mediaembed-MediaEmbedConfig.html#member-extraProviders

We need to extend and close the loop on our iframely integration so our blogs have parity with our newsfeed embed

- [ ] Extend the iframely embed to use out v1/newsfeed/preview.php, but refactor it out into a its own module and put it behind a new endpoint so we can get away from the v1/newsfeed monolithic file. 
- [ ] When a user provides a url in the new blog, show a preview ala newsfeed.
- [ ] Be sure the blog markdown embeds the rich content appropriately
- [ ] Be able to delete iframely content
- [ ] Floating plus icon on the left hand side should allow for uploading of images or take urls that get inserted

Story points: 8.0
Increase performance of hot/all search


### Summary

Hot/all discovery feed request takes approx. 10secs causing mobile devices to time out. And a sub optimal user experience in browser.

### Steps to reproduce

In Discovery, request all hot results with no filters. Time request.

### Platform information 

All devices

### What is the current *bug* behavior?

Request takes too long causing mobile app to time out.

### What is the expected *correct* behavior?

Request should be more efficient.

### Relevant request information

Story points: 8.0
Groups members list does not refresh/update when a user is removed

### Current behavior: 

- Given UserA is an admin of a group,
- and UserA is viewing the Members screen of that group,
- and UserA clicks the gear icon next to UserB in the list,
- and UserA clicks "Remove from group,"
- when UserB is either removed from the group or banned permanently,
- then the remove/ban modal disappears,
- and UserB is still shown in the list of members.

![image](/uploads/a849d2270ba0552d4fc6bf21e4240524/image.png)

### Expected behavior:

- ...when UserB is either removed from the group or banned permanently,
- then the remove/ban modal disappears,
- and UserB is no long displayed in the list of members.

Story points: 2.0
Wiring broken on staging

### Summary

Wiring not working on staging. Serious regression.

### Steps to reproduce

1. On staging try to wire another channel tokens

### Platform information 

Browser

### What is the current *bug* behavior?

Wiring failing with error

### What is the expected *correct* behavior?

Wire should be successful.

### Relevant logs and/or screenshots

![image](/uploads/a973d1969ac9b8640a3aaa2a54039bd8/image.png)

[Wire_Error.har](/uploads/6d58288f5549fe086896362819079651/Wire_Error.har)

Story points: 2.0
Error: Request error on: api/v2/media/video/undefined

Looks like we're getting empty videos coming from the backend, but they are blowing up in mobile

Sentry Issue: [MOBILE-CY](https://sentry.io/organizations/minds-inc/issues/1373074521/?referrer=gitlab_integration)

```
Error: Request error on: api/v2/media/video/undefined
  File "app:///[native code]", in construct
  File "src/common/services/api.service.js", line 17, in ApiError
    constructor(...args) {
  File "src/common/services/api.service.js", line 104, in _throwError
    const error = new ApiError(err.message || err.responseText || `Request error on: ${url}`);
  File "src/common/services/api.service.js", line 144, in call
    this._throwError(err, url);
  File "app:///[native code]", in callImmediates
...
(17 additional frame(s) were not displayed)
```

Story points: 6.0
Add a field to the metrics index to indicate if a user signed-up based on a referral from a Pro channel

This will help in tracing the activity of those users and check if they are active or not in order to reward the Pro channel

- [x] Add a `pro_referrer` boolean to the metrics index
- [x] ~~Add the referrer guid~~ (already present for `signup`)
- [ ] Wherever we write to the metrics index and have a referrer, write the referrer guid and the boolean if they are a referrer

Story points: 3.0
Group feeds hydration failure

### Summary

Subverse Newsroom Group posts are not loading. Infinite loading circle. Verified on multiple browsers (brave, chrome, firefox) and environments (staging, canary, production). May require a hard refresh because error can be hidden by caching.

### Steps to reproduce

Reproducable sporadically. Seems to happen in high volume groups with building review queues.
Judging by the HAR exporting all of the entities as null

![image](/uploads/cd89d4a0063643ab4c8f3efbf5e40547/image.png)

https://www.minds.com/newsfeed/1074773983844339712


### Platform information 

Browser

### What is the current *bug* behavior?

Subverse Newsroom Group post feed not loading

### What is the expected *correct* behavior?

Post feed should load

### Relevant logs and/or screenshots

Staging
![image](/uploads/5a7c5e106575204b159471c74c52fa28/image.png)


Production / Firefox 
![image](/uploads/c2ec626e819e954a9c4d8ffea90d073f/image.png)

We need to fix the null entities coming out of the groups / pro queue

If group owners or moderators visit the group, they should see the entire list of entities, because they can approve or reject (delete) posts. 

If group members or visitors for open groups, we need to remove unapproved entities from the list

@benhayward.ben needs to talk to @edgebal about the finer points of filtering out these entities on the backend

Story points: 4.0
Legacy USD boost prompt still appears

<!---
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

Legacy boost prompt that allows payment in USD still appears sometimes.

### Steps to reproduce

1. Click boost on your post and notice the token prompt (this is correct behavior)
2. Go to someone else's channel and click to Wire them on a post. 
3. Toggle over to send them USD. 
4. Exit wire prompt without making payment.
5. Go back to your channel and click boost on your post. 
6. Notice the legacy USD prompt - this should be removed and never show up

### Platform information 

iOS Catalina, MacBook, Chrome

### What is the expected *correct* behavior?

Only the token boost prompt should ever appear.

### Relevant logs and/or screenshots

![Screen_Shot_2020-02-04_at_3.27.11_PM](/uploads/5c37ce807dc504468956ee199aa417c8/Screen_Shot_2020-02-04_at_3.27.11_PM.png)

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

Story points: 4.0
Cannot remind a group post before joining

<!---
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

Cannot remind this post:

https://www.minds.com/newsfeed/1064982723935780864

Error given:
`{"status":"error","message":"Actor cannot interact with the entity"}`

### Steps to reproduce

1. Log in.
2. Try to remind post from group feed without joining.

### Platform information 

Replicated Chromium / Ubuntu 19.04

### What is the current *bug* behavior?

Cannot remind post, error returned from endpoint `{"status":"error","message":"Actor cannot interact with the entity"}`

### What is the expected *correct* behavior?

* The member should likely be able to share this.
* If the member can't share we should be showing them an error.

### 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

I've checked other groups and I can remind content from the ones I tried.

Story points: 4.0
Implement newest Unleash client release, Cassandra caching and add a sync runner

- [x] Bump to unleash-client-php#6
- [x] Sync CLI runner, wait 5 minutes between sync operations
- [x] Cassandra general cache
- [x] Unleash service should fetch and write to Cassandra
- [x] Unleash service should read row from Cassandra


Story points: 3.0
Add a title to video and image entities

Video and image entities will have optional titles on the new composer.

This is a card to extend the backend data models for image and video entities

- [x] Add title to videos
- [x] Add title to images
- [x] Make sure these are exported on their entities at the api level
- [ ] ~~unit tests~~ This is all /api/v1/newsfeed code, so no testing on this until we implement Activity editing

Story points: 3.0
Extend user settings to allow users to set "hideShareSettings"

This is the backend card for extending the user's settings to enable them to "hideShareButtons"

@markeharding rolled out the share toolbar and the community requests being able to turn this off

- [] extend the user entity to be able to save "hideShareButtons"
- [] v1/settings should update the user with the new settings
- [] unit tests to make sure the updated user model saves / exports

Story points: 2.0
verification email template issues

- [ ] Make sure the subject / title is "Please, confirm your email"
- [ ] Remove duplicate footer, the template should include them by default
- [ ] @ottman reports that "the caps look weird in the current iteration" but I don't know what that means.

Attached is a PDF version of the email thread

[Re_Fw_Confirm_your_Minds_email_Action_required.pdf](/uploads/868b663faa9f14d12b5e5b7773023413/Re_Fw_Confirm_your_Minds_email_Action_required.pdf)

Story points: 2.0
Check every single link on ssr.minds.com

Check all the links, console, caching off, hard reset: 

- No https errors
- No new console errors (errors not in production)

## links checked

- [x] minds.com root
- [x] newfeed
- [x] wallet
- [x] hamburger menu
- [x] settings
- [x] static page footers

Story points: 4.0
When an entity gets reported, save a copy that can't be edited

To increase the validity of the jury and moderation process, we need to create a historical record of the entity when it gets reported. Currently, reports can be edited and the offending content can be removed and invalidate our three strike process.

- [x] When an entity is reported, save a copy of the original entity to the moderation_reports_by_state table in cassandra
- [x] Extend the https://www.minds.com/api/v2/moderation/jury/initial endpoint to return the copy of the original entity
- [x] Keep the new entity URN as we'll be showing them side by side
- [x] Unit tests to make sure our repository and manager return the right thing

Story points: 6.0
Change the error message for "No VOIP allowed" to "Invalid phone number"

Our error messaging coming out of the voip verification is misleading. If you enter a phone number that's valid or voip, we get a generic error. 

As reported by @omadrid:

*Sidenote: I think the '**voip phones not allowed**' blanket error message isn't user-friendly and is often not an accurate description of the problem.*

Look at the error messages that we get back from twilio in the sms client in engine. For actual voip errors we want to return the original message. But we should return better errors than we currently ar

- [x] Return the invalid voip error for voip numbers
- [x] Return "invalid phone numbers" for numbers

Story points: 2.0
Simplify our feature flags with the unleash service

With the compiled work of onboarding, product pages and nav, we need to reduce the number of feature flags to turn on the new ui in one toggle. We should also take the time to clean up our existing feature flags and make them all configurable or remove the invalid ones

- [x] setup a new feature flag called 'ux-2020'
- [x] remove the onboarding, product page and nav feature flags 
- [x] audit the feature flags in engine
- [x] make sure all current feature flags are setup in the feature flag export mapping
- [x] enable toggling of the feature flag on and off with the unleash client

Story points: 4.0
Media reminds as owner showing up as fresh posts

<!---
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

Reminds from media pages are not showing as a remind on the users feed, they're showing as original posts.

### Steps to reproduce

1. Go to a media page for an image
2. Remind
3. Check your feed

### Platform information 

Cross-platform web replicated Ubuntu / Chromium

### What is the current *bug* behavior?

No Remind box is shown for the Remind, making it look like fresh content.

### What is the expected *correct* behavior?

It should be in a remind box.

### Relevant logs and/or screenshots

![image](/uploads/2655fecff07e5e27ee91f4e188e87b5c/image.png)

![image](/uploads/66a6e2a529834c613f2444569500ed5b/image.png)

### Possible fixes

(If you can, link to the line of code that might be responsible for the problem)

Story points: 4.0
When a user has an unverified email address, deny write permissions

When a new user has not verified their email address, any ACL that requires write access should raise a 403 forbidden error

This error message will be used to control user access on the front end and mobile by prompting them to validate their email address

Note, this needs to not effect existing users who have not verified their email address until we can roll out proper messaging

Unverified users **should** not be able to:
- [x] Create a post
- [x] Comment on a post 
- [x] Vote up or down
- [x] Create group
- [x] Create blog
- [x] Upload images
- [x] Upload movies
- [x] unit tests

Story points: 6.0
Channel and group search should use 1 y range for aggregating results

Make sure that our search algorithms are using 1 year for calculating their results. 

Searching for 1 year returns better results

https://www.minds.com/newsfeed/global/top;period=1y;all=1;hashtag=null;query=nutrition

The default search box returns the Top 24h which is too volatile / inaccurate

Story points: 2.0
Make sure we're filtering out banned channels in the feeds and search results

We need to make sure that we're excluding banned channels from the search results and feeds

- [ ] Verify that banned channels are being filtered in the feeds.
- [ ] Verify that banned channels are being filtered in the search results
- [ ] Research raising an error if a banned channel shows up where it's not supposed too (unless removing it from the es queries makes that impossible)

Story points: 16.0
Re-send confirmation email after certain time if no action was taken by new user

If a unverified user is less than a week old (we don't want to send these out after 7 days)

When an unverified user logs in, created a delayed queue in SQS that waits for 24 hours (like we do with user registration), this queue job then checks to see if the user is unverified and then sends them a reminder verification email.


Story points: 4.0
Create an api for the classifier system

- [ ] create an API for marking a channel with admin feedback
- [ ] create an API for getting the summary of a channel's classifier (these stats will be displayed to the admin on the firehose)
- [ ] Api endpoints are admin only 


Proposed schema from @ramialbatal 

* Aggregated counts of:
  1. Active days (in the last 30 days, last 7 days)
  1. Comments written and received (last 30 days, last 7 days, last 1 day)
  1. Channels received comments from the current channel, channels commented on the current channel posts/blogs (last 30 days, last 7 days, last 1 day).
  1. Reminds done by the channel and received (last 30 days, last 7 days, last 1 day)
  1. Channels reminded by the current channel, channels
  1. Votes done by the channel and received (last 30 days, last 7 days, last 1 day)
  1. Boosts (last 30 days, last 7 days, last 1 day) + total tokens during the same periods
  1. Boosts Refund (last 30 days, last 7 days, last 1 day) + total tokens during the same periods
  1. Wire received and sent (last 30 days, last 7 days, last 1 day) + total tokens received and sent in the same periods
  1. Channels received wires from the current channel, Channels sent wires to the current channel
  1. Withdrawals
  1. Channels subscribed to the current channels (Total, in the last 30 days, last 7 days, last 1 day)
  1. Subscriptions (Total, in the last 30 days, last 7 days, last 1 day)
  1. Posts (in the last 30 days, last 7 days)
  1. Blogs (in the last 30 days, last 7 days)

* A list of the most recent 50 comments
* The profile picture
* The banner
* The profile description


Schema from @markeharding 



CREATE TABLE classifier_outliers (
  user_guid bigint,
  outlier_values map<timestamp,int>,
  admin_feedback map<timestamp,int>,
  PRIMARY KEY(user_guid)
);


Waiting on confirmation about oauth

We need to make the api patch and complete so Rami can write all the information and the admins can only update the classifier.

Story points: 12.0
Campaigns get marked as complete on first view

**POST** `/api/v2/analytics/views/boost/1005588450394509314`

```json
{"client_meta":{"platform":"web","page_token":"73fa30c3-a9211b82-b291eca5-8c06d756-793ec9a2-67348452","campaign":"urn:boost:newsfeed:1005588450394509314","delta":0,"position":-1}}
```

Story points: 2.0
Posts search function in Boost Campaign creator does not work

E.g. Search term *Tes*

**POST** `http://localhost:8080/api/v2/feeds/container/1007976506581848080/activities?sync=1&force_public=1&query=Tes&limit=1`

```json
{"status":"success","entities":[],"load-next":""}
```

Story points: 2.0
Firehose video thumbnail stuck

<!---
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

When using firehose, in videos, after accepting or rejecting a video the thumbnail does not change.  The thumbnail will not update until the page is refreshed.

### Steps to reproduce

1. go into firehose
2. go to videos 
3. accept or report the video
4. notice that the thumbnail image does not update

### Platform information 

firefox, win10

### What is the current *bug* behavior?

video images in firehose are not updating

### What is the expected *correct* behavior?

video thumbnails should update accurately 

### 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
Analytics signup events

- [x] Create a new ElasticSearch `minds-metrics-*` event that allows aggregating analytics for signups.

---

Keeping original issue description below for historical purposes.

> **Start tracking "potential" users in kite.**
>
> Potential users are users who have not signed up for the account and are visiting the publicly accessible pages.
> 
> We can identify a user by their MWA as they convert from not-logged in to signed up. The MWA stays the same and the entries in minds-metrics have the MWA, and logged_in: true for logged in users and that field will be null.
> 
> What we can't do, however, is track the MWA and user_guid, because this will allow us to indentify users and their activity. To make this double blind without easily identifiable information, we just need to dual write the sign up activity without the user guid, with the MWA and with a time stamp set to noon so there is not identifiable information.
> 
> - [x] Dual write the signup action to the minds-metrics index
> - [x] Where we write user guids, do not write MWA
> - [x] Where we write MWAs, do not write user guid and write a fixed date at noon so all date times are obfuscated

Story points: 8.0
Add a robots.txt / sitemap.xml

This best practices gives us a pretty good breakdown of how we can guide search engines more, including linking to a sitemap

https://www.searchenginewatch.com/2019/03/21/robotstxt-best-practice-guide/

https://www.advancedhtml.co.uk/robots-sitemaps.htm/

I suspect that we can gain a lot of power by setting this up. It will also be work looking into how Facebook publishes its "Public preview"

Story points: 4.0