Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: update list paddings, load all stakes regardless of colonies, update redirect to stakes #2759

Merged
merged 14 commits into from
Aug 15, 2024

Conversation

Nortsova
Copy link
Contributor

@Nortsova Nortsova commented Jul 23, 2024

Description

  • Padding of items in the list should match the design.
  • The items in the list should not overflow the container.
  • The pills should show the correct status.
  • The list of claimable motions should be visible across all colonies

Testing

  • Ensure that Reputation is installed

Step 1. Create actions with reputation decision method, title should be long
image
Step 2. Stake this motion
Step 3. Go to UserHub
image
Step 4. Create different motions on different stages (Claimable, Claimed, Finalizable, Pending)
image
Ensure that styles are correct here
Step 5. Go to another Colony (wayne) and open UserHub
image
Ensure that even tho Reputation extension is not installed, you can see stakes from all colonies
Step 6. Enable Reputation Extension for Wayne colony
Step 7. Create new Staking motion in Wayne colony
Step 8. Check UserHub to see all motions
image
Step 9. Click to motion from different colony and see that you will be redirected
Step 10. Uninstall Reputation Extension and go to UserHub (update: now Uninstalled became "Lost" status)
image
(Full uninstalled functionality done in #2737)
Step 11. Create stakes, uninstall VotingReputation. Install it again. All not claimed stakes should have status "Lost".
image

Step 12. Create motions in different colonies and finalize them. You will see "Claimable" status
image
Step 13. Press the "Claim all" button and ensure that motions in both colonies claimed.
image
Step 14. Create motion and during pending and processing - open UserHub/Stakes tab
image

It shouldn't blink. (Sam found this bug in this review - #2759 (review))

Step 15. Disconnect and connect wallet. Open UserHub - stakes should have correct statuses, not "Lost"

Diffs

New stuff

Bug fixed:
After Step 8 click on motion from other colonies.
It was a bug with tx param, it was removed and the user was redirected to the colony page instead of motion page. Now it open the correct link

Resolves #2566

@Nortsova Nortsova requested review from a team as code owners July 23, 2024 18:32
@CLAassistant
Copy link

CLAassistant commented Jul 23, 2024

CLA assistant check
All committers have signed the CLA.

@Nortsova Nortsova marked this pull request as draft July 23, 2024 18:32
@Nortsova Nortsova changed the title fix: update list paddings, load all stakes regardless of colonies, update redirect to stakes [WIP] fix: update list paddings, load all stakes regardless of colonies, update redirect to stakes Jul 23, 2024
@rdig
Copy link
Member

rdig commented Jul 24, 2024

Is this ready for review?

@Nortsova
Copy link
Contributor Author

Is this ready for review?

No, it is in progress.

@Nortsova Nortsova force-pushed the fix/2566-user-hub-stakes branch from a8934cf to 7ab3f3b Compare July 26, 2024 08:33
@Nortsova Nortsova changed the base branch from feat/multi-sig to master July 26, 2024 08:33
@Nortsova Nortsova marked this pull request as ready for review July 26, 2024 08:33
@Nortsova Nortsova changed the title [WIP] fix: update list paddings, load all stakes regardless of colonies, update redirect to stakes fix: update list paddings, load all stakes regardless of colonies, update redirect to stakes Jul 26, 2024
@@ -0,0 +1,189 @@
import {
Copy link
Contributor Author

@Nortsova Nortsova Jul 26, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would really appreciate for review this file and any comments are welcome, it kinda duplication for https://github.com/JoinColony/colonyCDapp/blob/master/src/hooks/useNetworkMotionStates.ts
But I tried to do it for all user colonies, not only for the current one

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good shout with a separate hook for all colonies. I think it can be simplified a bit further to roughly follow this flow:

  • Get all installed extensions for joined colonies
  • Select all voting reputation addresses (directly from the query data, you shouldn't need any mapping)
  • Get network states for each of the motions
  • Create a map between motion database IDs and states so that a flat map can be used

Copy link
Contributor

@iamsamgibbs iamsamgibbs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice start to this issue, it is definitely more complicated than it initially appeared! I think the estimate should definitely go up from 4 hours.

All the UI fixes look great, looking much tidier now!

Screenshot 2024-07-26 at 11 34 54

I did notice the "Claim all stakes" button does not appear on mobile - not sure if this is intended?

Screenshot 2024-07-26 at 12 19 58

There are a few issues I've noticed.

The stake amount should show using the native token for the colony it was created in. Currently it uses the token for the colony you have open.

Screenshot 2024-07-26 at 11 33 07

Switching to the correct colony is working nicely, great job with that!

Screen.Recording.2024-07-26.at.11.35.07.mov

There is no loading spinner when you first open the userhub after a refresh:

Screen.Recording.2024-07-26.at.12.05.33.mov

This is particularly noticeable on a slower connection - it also initially loads in with the wrong status:

Screen.Recording.2024-07-26.at.12.12.05.mov

There is also this issue when opening the userhub straight after staking a motion. I think this only happens during the few seconds directly after staking a motion so this might not be a big deal and we could address it separately.

Screen.Recording.2024-07-26.at.12.08.16.mov

After uninstalling the extension, all stakes are shown as "uninstalled". I think for the stakes we know have already been claimed, we should still show those as "claimed" rather than setting it as "uninstalled". I personally think "uninstalled" should be shown as "lost" for the stakes that we know were unclaimed when the extension was uninstalled - but this might need checking with @arrenv

Screenshot 2024-07-26 at 12 13 37

After re-installing the extension, new motions created with the new extension are seemingly using the same nativeId (or whatever is being called to check the status), as the old stakes (from the now uninstalled extension) are also being updated.

In this screenshot the bottom one is from the now uninstalled extension, the top one is from the newly installed extension.

Screenshot 2024-07-26 at 12 15 07

If you have unclaimed stakes across multiple colonies, then the "claim all stakes" button only works for the current colony you are in. It would be great to make this claim stakes across all colonies, or if this isn't possible it should be reworded "Claim all stakes in this colony" or something. The state also doesn't update until the userhub is closed and reopened.

Screen.Recording.2024-07-26.at.12.16.34.mov

Thank you for tackling this complicated issue though! It highlights some of the issues we may have when we make the userhub accessible outside of colonies which will be required as part of the crypto to fiat work.

if (!motionState) {
return UserStakeStatus.Unknown;
const colonyAddress = stake.action?.colonyAddress;
const currentColonyMotionState = statesMap?.get(colonyAddress ?? '');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't need a ? after statesMap here

Comment on lines 43 to 46
const reputationAddress =
colonyAddress && votingReputationByColony[colonyAddress];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think this variable could have a better name

const stakeColonyName = stake.action?.colony.name ?? '';

useEffect(() => {
if (colonyName !== stakeColonyName) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we compare colonyAddresses here? It is possible for two colonies to have the same name so this is a bad comparison.

@Nortsova Nortsova self-assigned this Jul 26, 2024
Copy link
Collaborator

@jakubcolony jakubcolony left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice effort with this pretty complex issue @Nortsova

Reducing nesting of the mapping between colony addresses and motions and their states would help improve the overall readability. I think this could be achieved if you can instead create a map between database motion ID (it's unique across colonies and formatted as chainId-votingRepExtnAddress_nativeMotionId) and their corresponding states.

Please ensure you type the arguments of the functions you add as it reduces the risk of mistakes.

@@ -53,7 +56,7 @@ const StakesTab = () => {
>
<div className="mb-4 flex items-center justify-between sm:px-6 sm:pt-6">
<p className="heading-5">{formatMessage({ id: 'stakes' })}</p>
{!isMobile && (
{!isMobile && votingReputationAddress && (
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the purpose of this check? It prevents staked expenditure stakes from being claimed if voting rep is not installed

@@ -15,3 +15,39 @@ query GetExtensionInstallationsCount($id: ID!) {
reputationWeighted
}
}

query GetAllColoniesExtensions(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps GetJoinedColoniesExtensions would better describe what it does?

$sortDirection: ModelSortDirection = ASC
$limit: Int = 100
$nextToken: String
$isWatching: Boolean
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels like this argument doesn't belong here anymore, should the query always set the filter to true instead?

Comment on lines 25 to 73
const getInstalledExtensions = (colony, versionsData) => {
const colonyExtensions = colony?.extensions?.items?.filter(notNull);
if (!colonyExtensions) {
return [];
}

const extensionVersions =
versionsData?.listCurrentVersions?.items?.filter(notNull);

const colonyExtensionsMap = colonyExtensions.map((extension) => {
const extensionConfig = supportedExtensionsConfig.find(
(e) => getExtensionHash(e.extensionId) === extension?.hash,
);

const { version } =
extensionVersions?.find((e) => e?.extensionHash === extension.hash) || {};

// Unsupported extension
if (!extensionConfig || !version) {
return null;
}

return mapToInstalledExtensionData({
colony,
extensionConfig,
colonyExtension: extension,
version,
});
});
return colonyExtensionsMap.filter(notNull);
};

const getVotingReputationAdress = (installedExtensions): string | undefined => {
const votingReputationExtension = installedExtensions.find(
(extension) => extension.extensionId === Extension.VotingReputation,
);

return votingReputationExtension?.address;
};
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is all this processing necessary if you only care about the hash and the address of each colony extensions?

@@ -0,0 +1,189 @@
import {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good shout with a separate hook for all colonies. I think it can be simplified a bit further to roughly follow this flow:

  • Get all installed extensions for joined colonies
  • Select all voting reputation addresses (directly from the query data, you shouldn't need any mapping)
  • Get network states for each of the motions
  • Create a map between motion database IDs and states so that a flat map can be used

const sortByDate = <T extends { createdAt: string }>(a: T, b: T) =>
new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime();

const useJoinedColoniesWithExtensions = (userAddress?: string) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This hook seems very specific to useNetworkMotionStates, I would either make it a helper or place it next to that hook to indicate it's not intended to be reusable

@Nortsova
Copy link
Contributor Author

Nortsova commented Aug 5, 2024

I noticed an error that I can't manually repeat. It happen for this request:

const votingRepClient = VotingReputationFactory.connect(
     votingReputationAddress,
     ethersProvider as unknown as Provider,
 );
try {
 const motionState = await votingRepClient.getMotionState(nativeMotionId);
  statesMap.set(nativeMotionId, motionState);
 } catch (e) {
    console.log('error', e);
    statesMap.set(nativeMotionId, null);
 }

image

I also tried to do it with check if fullWallet but it didn't help

image

@Nortsova
Copy link
Contributor Author

Nortsova commented Aug 6, 2024

A scenario for signerOrProvider error found, here is another bug with the same issue - #2643

@Nortsova Nortsova force-pushed the fix/2566-user-hub-stakes branch from d5c1654 to 7710c45 Compare August 6, 2024 12:19
Copy link
Contributor

@iamsamgibbs iamsamgibbs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really great work on this @Nortsova ! 🎉 This definitely hasn't been an easy issue, so fantastic job on getting this to work so nicely!

Truncation looks good on both desktop and mobile:

Screenshot 2024-08-07 at 09 46 45 Screenshot 2024-08-07 at 09 47 06

The motion pills in the different states as viewed from another colony:

Screenshot 2024-08-07 at 09 54 23

Claiming all with stakes in different colonies works without a hitch. I also tested this from a completely new colony where the extension has never been installed before and was able to claim a stake from another colony via "claim all". 🎉 Nice work adjusting the saga to accommodate the different colony and extension addresses.

Screen.Recording.2024-08-07.at.09.55.39.mov

Statuses show correctly after the extension has been uninstalled and reinstalled, and stakes open the correct transaction when clicked.

Screenshot 2024-08-07 at 09 58 59

I've only found two major issues. The first is if you have no voting reputation extension installed in a colony that has old motions, the stakes will fail to load:

Screen.Recording.2024-08-07.at.09.56.27.mov

Once a new version of the extension is installed, they will load again. (This issue still happens if you switch to another colony where the extension is installed).

There is also this console warning which it would be great if you could look into and resolve. I'm not sure how this could affect other parts of the app if left as is.

Screenshot 2024-08-07 at 10 05 36

I'm guessing it has something to do with how getContributorsByAddress is being used to get all the colony extensions.

Comment on lines 137 to 141
motionIds: {
databaseMotionId: string;
colonyAddress: string;
extensionAddress: string;
}[];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if there is a better name than motionIds now that this is an object

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, @iamsamgibbs ! thanks!

@Nortsova Nortsova force-pushed the fix/2566-user-hub-stakes branch from a1eb500 to 45a6745 Compare August 7, 2024 17:07
@Nortsova Nortsova requested a review from iamsamgibbs August 7, 2024 17:08
Copy link
Collaborator

@jakubcolony jakubcolony left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for addressing my previous feedback @Nortsova, feels like it's not very far off.

I left a couple of comments, but overall you've done a great job so far. Nice work 💪

motionIds: claimableStakes.map(
(stake) => stake.action?.motionData?.databaseMotionId ?? '',
),
motionStates: claimableStakes.map((stake) => ({
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be called something like userStakes instead? It's not only motions (expenditures can have stakes too)

@@ -84,6 +95,7 @@ const ActionSidebarContextProvider: FC<PropsWithChildren> = ({ children }) => {
);

const toggleOff = useCallback(() => {
removeTxParamOnClose();
return toggleActionSidebarOff();
}, [toggleActionSidebarOff]);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a warning from GH build action about missing dependency in this line

src/graphql/fragments/colony.graphql Show resolved Hide resolved
}
}

query GetUserStakesByColony($userAddress: ID!, $colonyAddress: ID!) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't used anywhere now, so let's remove it 🗑️


export type MotionStatesMap = Map<string, MotionState | null>;

export type MotionStatesMapByColonies = Record<string, MotionStatesMap>;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks unused

Comment on lines 74 to 89
const {
joinedColoniesWithExtensions,
loading: joinedColoniesWithExtensionsLoading,
} = useJoinedColoniesWithExtensions(wallet?.address);

const votingReputationByColony = useMemo(() => {
return joinedColoniesWithExtensions.reduce((prev, colony) => {
if (!colony) {
return prev;
}
return {
...prev,
[colony.colonyAddress]: getVotingReputationAddressByColony(colony),
};
}, {});
}, [joinedColoniesWithExtensions]);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe moving the useMemo block to the useJoinedColoniesWithExtensions hook would make the body of this hook a bit lighter?

return !motionStatesMap.has(motion.databaseMotionId);
});
const deletedMotionIds = Array.from(motionStatesMap.keys()).filter(
(nativeMotionKey) =>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update the naming to indicate if it is the native ID or database ID. It should be database ID as only those are unique between colonies

const statesMap = new Map(motionStatesMap);

await Promise.all(
newMotionIds.map(async (nativeMotion) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure about nativeMotion, why such name?

deletedMotionIds.forEach((nativeMotionId) =>
statesMap.delete(nativeMotionId),
);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update naming here as well

Comment on lines 31 to 37
useGetFullColonyByAddressQuery({
variables: {
address: stake.action?.colonyAddress || '',
},
fetchPolicy: 'network-only',
nextFetchPolicy: 'cache-first',
});
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's an expensive query to be making for each stake in the list, I think the best thing to do here would be to modify the UserStake model to include a reference to colony field. You can then extract just the native token and its decimals in one go.

You could go a step further if you wish and fetch the extensions in the UserStake fragment as well. The benefit of such approach is that it would also work for stakes in colonies that the user has subsequently left.

Copy link
Contributor

@iamsamgibbs iamsamgibbs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for fixing the issues I raised! I've not seen the console warning and the code fixes for that make sense.

I've also tested the stake loading when there is no extension installed which is working now!

Screen.Recording.2024-08-08.at.09.12.37.mov

Once you've fixed up the comments Jakub has left I'll drop an approval on this.

Unrelated to this PR, but the activity feed will need a similar fix to what you have done here as it tries to load the old motion data through the new extension:

Screen.Recording.2024-08-08.at.09.15.16.mov

It also doesn't support the new "Lost" pill and will just show "Unknown" so we'll need to update this at a later point.

@Nortsova
Copy link
Contributor Author

Nortsova commented Aug 8, 2024

Thank you @iamsamgibbs! This is a really important note. I created a ticket for Activity Feed - #2907

iamsamgibbs
iamsamgibbs previously approved these changes Aug 9, 2024
Copy link
Contributor

@iamsamgibbs iamsamgibbs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work on this! The code refactor makes sense. I've retested everything and all is still working! 👍

Screenshot 2024-08-09 at 13 49 20 Screenshot 2024-08-09 at 13 53 22

Comment on lines 36 to 42
nativeToken: {
decimals: stake.action?.colony.nativeToken.nativeTokenDecimals,
symbol: stake.action?.colony.nativeToken.nativeTokenSymbol,
tokenAddress: stake.action?.colony.nativeToken.tokenAddress,
name: stake.action?.colony.nativeToken.name,
},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this just be nativeToken: state.action?.colony.nativeToken?

jakubcolony
jakubcolony previously approved these changes Aug 13, 2024
Copy link
Collaborator

@jakubcolony jakubcolony left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A lot of effort went into this PR so kudos to you @Nortsova.

I can see my stakes from across all colonies and navigate between them:

Screen.Recording.2024-08-13.at.16.18.04.mov

After uninstalling voting rep, the status shows as Lost:
image

Finalizable and claimable statuses also work fine:
image

image

I left a couple of comments but they're nothing major, so thumbs up from me 👍 Very nice work 💯

<button
type="button"
onClick={() =>
navigate(
`${window.location.pathname}?${TX_SEARCH_PARAM}=${stake.action?.transactionHash}`,
setQueryParamOnUrl(
navigatePath,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need a state for this or can we just use stakeColonyName here? Would make it a bit simpler to read without the state and useEffect

@@ -7,6 +7,7 @@ import { useAppContext } from '~context/AppContext/AppContext.ts';
import useEnabledExtensions from './useEnabledExtensions.ts';

export type MotionStatesMap = Map<string, MotionState | null>;
export type VotingReputationByColonyId = Record<string, string>;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit-picking, Id should be Address instead to avoid confusion

Comment on lines 31 to 37
const currentExtensionAddress = colonyExtensions.find((extension) => {
const extensionConfig = supportedExtensionsConfig.find(
(e) => getExtensionHash(e?.extensionId) === extension?.hash,
);
return extensionConfig?.extensionId === Extension.VotingReputation;
});
return currentExtensionAddress?.address;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const currentExtensionAddress = colonyExtensions.find((extension) => {
const extensionConfig = supportedExtensionsConfig.find(
(e) => getExtensionHash(e?.extensionId) === extension?.hash,
);
return extensionConfig?.extensionId === Extension.VotingReputation;
});
return currentExtensionAddress?.address;
const votingRepExtension = colonyExtensions.find(
(extension) =>
extension.hash === getExtensionHash(Extension.VotingReputation),
);
return votingRepExtension?.address;

getExtensionHash can be imported from colony-js


/**
* Hook that accepts an array of UserMotionStake and returns a map of motion IDs to their states
* Make sure to memoize the array of motion IDs to avoid infinite loops
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment seems no longer relevant

rdig
rdig previously approved these changes Aug 13, 2024
Copy link
Member

@rdig rdig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested and everything works as expected, at least the part that you fixed in this PR. Very good work Anastasiia! 💯

Screenshot from 2024-08-14 00-51-02
Screenshot from 2024-08-14 00-55-41
Screenshot from 2024-08-14 00-56-11
Screenshot from 2024-08-14 00-56-13

I did found something however, but something that's not really a issue related to this PR.

While a very long (multiple words) title shows up correctly, a title that contains a non-breakable word (no spaces) will break both the actions list UI as well as the action sidebar

Screenshot from 2024-08-14 00-50-24
Screenshot from 2024-08-14 00-50-41

I do want to note however, that it shows correctly in the Userhub where you fixed it in this PR

Screenshot from 2024-08-14 00-51-02

@Nortsova Nortsova dismissed stale reviews from rdig, jakubcolony, and iamsamgibbs via 7dd8791 August 14, 2024 07:48
@Nortsova Nortsova force-pushed the fix/2566-user-hub-stakes branch from 2a11ea5 to 7dd8791 Compare August 14, 2024 07:48
@mmioana mmioana self-requested a review August 14, 2024 08:02
Copy link
Contributor

@mmioana mmioana left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, really impressive work @Nortsova 🥇 Thank you for tackling this issue 🤩

Went through the testing steps and can confirm the required changes are in place
Screenshot 2024-08-14 at 10 15 55
Screenshot 2024-08-14 at 10 16 10
Screenshot 2024-08-14 at 10 18 50
Screenshot 2024-08-14 at 10 22 25
Screenshot 2024-08-14 at 10 23 24
Screenshot 2024-08-14 at 10 24 35
Screenshot 2024-08-14 at 10 25 08
Screenshot 2024-08-14 at 10 27 05

Screen.Recording.2024-08-14.at.10.27.33.mov
Screenshot 2024-08-14 at 10 28 22 Screenshot 2024-08-14 at 10 28 34 Screenshot 2024-08-14 at 10 29 14 Screenshot 2024-08-14 at 10 29 22 Screenshot 2024-08-14 at 10 30 34
Screen.Recording.2024-08-14.at.10.34.36.mov

However, I noticed claiming all stakes was not possible from the User Hub 😢
Can you please check?

Screen.Recording.2024-08-14.at.10.35.49.mov
Screenshot 2024-08-14 at 10 36 03

@mmioana mmioana self-requested a review August 14, 2024 12:33
Copy link
Contributor

@mmioana mmioana left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There was an issue with my env, can confirm also the claiming all stakes is working

Screen.Recording.2024-08-14.at.14.32.15.mov

Copy link
Member

@rdig rdig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Working as expected after your changes. Re-tested and everything is there. Nicely done!

Screenshot from 2024-08-14 17-52-38
Screenshot from 2024-08-14 17-53-45
Screenshot from 2024-08-14 17-54-42
Screenshot from 2024-08-14 17-54-49

@Nortsova Nortsova merged commit c470f5f into master Aug 15, 2024
3 of 6 checks passed
@Nortsova Nortsova deleted the fix/2566-user-hub-stakes branch August 15, 2024 08:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

UserHub Stakes tab issues - padding, overflow, filtered and status pill issue
6 participants