+
+
+ {{ $t('reactivateSpace') }}
+
+
+
diff --git a/src/composables/useClient.ts b/src/composables/useClient.ts
index 5028dd51e644..f598cccf104a 100644
--- a/src/composables/useClient.ts
+++ b/src/composables/useClient.ts
@@ -164,6 +164,20 @@ export function useClient() {
proposalId: payload.proposal.id
});
+ return receipt;
+ } else if (type === 'reactivate-space') {
+ const receipt = await client.reactivateSpace(
+ auth.web3,
+ web3.value.account,
+ {
+ space: space.id
+ }
+ );
+
+ mixpanel.track('Reactivate space', {
+ space: space.id
+ });
+
return receipt;
}
}
diff --git a/src/composables/useFormSpaceSettings.ts b/src/composables/useFormSpaceSettings.ts
index 9fa4e449cae6..d0f8518e60d4 100644
--- a/src/composables/useFormSpaceSettings.ts
+++ b/src/composables/useFormSpaceSettings.ts
@@ -123,6 +123,7 @@ export function useFormSpaceSettings(context: 'setup' | 'settings') {
delete formData.followersCount;
delete formData.verified;
delete formData.flagged;
+ delete formData.hibernated;
if (formData.filters.invalids) delete formData.filters.invalids;
}
diff --git a/src/helpers/interfaces.ts b/src/helpers/interfaces.ts
index fce753aaea2c..0a9d7b3f38a7 100644
--- a/src/helpers/interfaces.ts
+++ b/src/helpers/interfaces.ts
@@ -112,6 +112,7 @@ export interface Space {
activeProposals: number;
followersCount: number;
flagged: boolean;
+ hibernated: boolean;
terms: string;
}
@@ -165,6 +166,7 @@ export interface ExtendedSpace {
guidelines: string;
verified: boolean;
flagged: boolean;
+ hibernated: boolean;
voting: {
delay: number | null;
hideAbstain: boolean;
diff --git a/src/helpers/queries.ts b/src/helpers/queries.ts
index 5cf2fa52dbbd..2560e80b2b9d 100644
--- a/src/helpers/queries.ts
+++ b/src/helpers/queries.ts
@@ -407,6 +407,7 @@ export const SPACES_QUERY = gql`
followersCount
terms
flagged
+ hibernated
}
}
`;
@@ -452,6 +453,7 @@ export const SPACE_QUERY = gql`
guidelines
verified
flagged
+ hibernated
parent {
id
name
diff --git a/src/locales/default.json b/src/locales/default.json
index a1cd7869b86f..fca6c6f846a0 100644
--- a/src/locales/default.json
+++ b/src/locales/default.json
@@ -174,6 +174,7 @@
"createASpace": "Create a space",
"getStarted": "Get started",
"skip": "Skip",
+ "reactivateSpace": "Reactivate space",
"newSpaceNotice": {
"header": "Your space is live!",
"mainText": "You can change how voting power is calculated via strategies in your {settings}. Changes to your settings will only affect new proposals, existing proposals can not be changed.",
@@ -235,7 +236,9 @@
"uploading": "Uploading image",
"markdown": "Styling with Markdown is supported",
"errorGettingSnapshot": "We encountered an error while fetching the snapshot block number which is needed to calculate your voting power. Please try again later.",
- "errorTimeInPast": "Entered time is in the past. Please select a future time."
+ "errorTimeInPast": "Entered time is in the past. Please select a future time.",
+ "errorSpaceHibernatedAdmin": "Admins your attention is required. This space has been hibernated due to a lack of activity, and as a result, proposal creation is currently disabled. To re-enable your space, please go to the settings page and click \"Reactivate\".",
+ "errorSpaceHibernatedUsers": "This space has been hibernated due to a lack of activity. As a result, the creation of proposals has been temporarily disabled. To resume your ability to create proposals, the space needs to be reactivated by an admin. Please check back later or contact your space admin for further information."
},
"delegates": {
"header": "Delegates",
@@ -534,6 +537,10 @@
"delegationPortal": {
"title": "Delegation portal",
"information": "Please ensure your token adheres to a compatible delegation standard to enable delegate discovery and activity within your Snapshot space."
+ },
+ "reactivatingHibernatedSpace": {
+ "information": "Your space is currently in hibernation due to six months of inactivity. To re-enable proposal creation, please click the button below to reactivate your space. There are no penalties for hibernation, but the space will remain inactive for proposal creation until reactivation by an admin.",
+ "disabledInformation": "Your space contains invalid settings since your last update. Fix the errors below and your space will be reactivated automatically upon save."
}
},
"setup": {
@@ -652,7 +659,8 @@
"ensSet": "ENS text record was successfully set",
"transactionSent": "Transaction sent",
"emailPreferencesUpdated": "Email preferences updated",
- "delegationAdded": "Well done. Delegate was successfully added"
+ "delegationAdded": "Well done. Delegate was successfully added",
+ "spaceReactivated": "The space has been reactivated"
},
"explore": {
"createStrategy": "Create strategy",
diff --git a/src/views/SpaceCreate.vue b/src/views/SpaceCreate.vue
index 53fbd4a9dafb..3cce1e3c9091 100644
--- a/src/views/SpaceCreate.vue
+++ b/src/views/SpaceCreate.vue
@@ -493,7 +493,8 @@ onBeforeRouteLeave(async () => {
web3.authLoading ||
hasAuthorValidationFailed ||
validationLoading ||
- isGnosisAndNotSpaceNetwork
+ isGnosisAndNotSpaceNetwork ||
+ space.hibernated
"
primary
:data-testid="
diff --git a/src/views/SpaceSettings.vue b/src/views/SpaceSettings.vue
index eb88be6a8014..f1bc61c85372 100644
--- a/src/views/SpaceSettings.vue
+++ b/src/views/SpaceSettings.vue
@@ -148,13 +148,6 @@ async function handleSubmit() {
}
}
-onMounted(async () => {
- populateForm(props.space);
- await loadEnsOwner();
- await loadSpaceController();
- loaded.value = true;
-});
-
const {
isRevealed: isConfirmLeaveOpen,
reveal: openConfirmLeave,
@@ -172,6 +165,13 @@ const isViewOnly = computed(() => {
return !(isSpaceController.value || isSpaceAdmin.value);
});
+onMounted(async () => {
+ populateForm(props.space);
+ await loadEnsOwner();
+ await loadSpaceController();
+ loaded.value = true;
+});
+
onBeforeRouteLeave(async () => {
if (hasFormChanged.value && !isViewOnly.value) {
const { data } = await openConfirmLeave();
@@ -190,6 +190,15 @@ onBeforeRouteLeave(async () => {