mirror of
https://github.com/urbit/shrub.git
synced 2024-12-19 08:32:39 +03:00
Merge pull request #5576 from urbit/lf/no-perms-rejoin
groups: fix rejoining a group after an error
This commit is contained in:
commit
2d95a34f7c
@ -143,6 +143,8 @@ function PendingGroup(props: PendingGroupProps) {
|
|||||||
<Box>
|
<Box>
|
||||||
{!joining ? (
|
{!joining ? (
|
||||||
<Text color="blue">Invited</Text>
|
<Text color="blue">Invited</Text>
|
||||||
|
) : joining === 'no-perms' || joining == 'strange' ? (
|
||||||
|
<Text color="red">Join Failed</Text>
|
||||||
) : joining !== "done" ? (
|
) : joining !== "done" ? (
|
||||||
<Text gray>Joining...</Text>
|
<Text gray>Joining...</Text>
|
||||||
) : (
|
) : (
|
||||||
|
@ -150,22 +150,38 @@ function JoinError(props: {
|
|||||||
desc: JoinDesc;
|
desc: JoinDesc;
|
||||||
request: JoinRequest;
|
request: JoinRequest;
|
||||||
modal: boolean;
|
modal: boolean;
|
||||||
|
dismiss: () => void;
|
||||||
}) {
|
}) {
|
||||||
const { desc, request, modal } = props;
|
const { dismiss, desc, request, modal } = props;
|
||||||
const { preview } = usePreview(desc.group);
|
const { preview } = usePreview(desc.group);
|
||||||
const group = preview?.metadata?.title ?? desc.group;
|
const group = preview?.metadata?.title ?? desc.group;
|
||||||
const title = `Joining ${group} failed`;
|
const title = `Joining ${group} failed`;
|
||||||
const explanation =
|
const explanation =
|
||||||
request.progress === 'no-perms'
|
request.progress === 'no-perms'
|
||||||
? 'You do not have the correct permissions'
|
? 'You do not have the correct permissions'
|
||||||
: 'An unexpected error occurred';
|
: 'An unexpected error occurred';
|
||||||
|
|
||||||
|
const onRetry = () => {
|
||||||
|
useGroupState.getState().abortJoin(desc.group);
|
||||||
|
const [,,ship,name] = group.split('/');
|
||||||
|
airlock.poke(
|
||||||
|
join(ship, name, desc.kind, false, false)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const onAbort = () => {
|
||||||
|
useGroupState.getState().abortJoin(desc.group);
|
||||||
|
dismiss();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<JoinSkeleton modal={modal} title={title} desc={desc}>
|
<JoinSkeleton modal={modal} title={title} desc={desc}>
|
||||||
<Col p='4' gapY='4'>
|
<Col p='4' gapY='4'>
|
||||||
<Text fontWeight='medium'>{explanation}</Text>
|
<Text fontWeight='medium'>{explanation}</Text>
|
||||||
<Row>
|
<Row gapX="2">
|
||||||
<Button>Dismiss</Button>
|
<Button onClick={onRetry} primary>Retry</Button>
|
||||||
|
<Button onClick={onAbort} destructive>Abort</Button>
|
||||||
</Row>
|
</Row>
|
||||||
</Col>
|
</Col>
|
||||||
</JoinSkeleton>
|
</JoinSkeleton>
|
||||||
@ -233,7 +249,7 @@ export function Join(props: JoinProps) {
|
|||||||
finished={finishedPath}
|
finished={finishedPath}
|
||||||
/>
|
/>
|
||||||
) : isErrored ? (
|
) : isErrored ? (
|
||||||
<JoinError modal={modal} desc={desc} request={openedRequest} />
|
<JoinError dismiss={dismiss} modal={modal} desc={desc} request={openedRequest} />
|
||||||
) : (
|
) : (
|
||||||
<JoinInitial modal={modal} dismiss={dismiss} desc={desc} invite={invite} />
|
<JoinInitial modal={modal} dismiss={dismiss} desc={desc} invite={invite} />
|
||||||
);
|
);
|
||||||
|
@ -295,12 +295,14 @@
|
|||||||
::
|
::
|
||||||
++ rollback
|
++ rollback
|
||||||
|^
|
|^
|
||||||
=/ =request:view (~(got by joining) rid)
|
=/ =request:view (~(got by joining) rid)
|
||||||
?+ progress.request ~|(cannot-rollback/progress.request !!)
|
?+ progress.request ~|(cannot-rollback/progress.request !!)
|
||||||
%start start
|
%start start
|
||||||
%added added
|
%added added
|
||||||
%metadata metadata
|
%metadata metadata
|
||||||
|
?(%no-perms %strange %abort) error
|
||||||
==
|
==
|
||||||
|
++ error jn-core
|
||||||
++ start jn-core
|
++ start jn-core
|
||||||
++ added (emit del-us:pass)
|
++ added (emit del-us:pass)
|
||||||
++ metadata (emit:added remove-pull-groups:pass)
|
++ metadata (emit:added remove-pull-groups:pass)
|
||||||
|
Loading…
Reference in New Issue
Block a user