mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 10:31:15 +00:00
feat(editor): Add cloud ExecutionsUsage and API blocking using licenses (#6159)
* Add ExecutionsUsage component * set $sidebar-expanded-width back to 200px * add days using interpolation * Rename PlanData type to CloudPlanData * Rename Metadata type to PlanMetadata * Make prop block in the update button * Use variable in line-height * Remove progressBarSection class * fix trial expiration calculation * mock expirationDate and fix issue with days left * Remove unnecesary property from class .container * inject component data via props * Check for plan data during app mounting and keep data in the store * Remove mounted hook * redirect when upgrade plan is clicked * Remove computed properties * Remove instance property as it's not needed anymore * Flatten plan object * remove console.log * Add all cloud types within its own namespace * keep redirection inside component * get computed properties back * Improve polling logic * Move cloudData to its own store * Remove commented interfaces * remove cloudPlan from user store * fix imports * update logic for userIsTrialing method * centralize userIsTrialing method * redirect to production change plan page always * Call staging or production cloud api depending on base URL * remove setting store form ExecutionUsage.vue * fix linting issue * Add trial group to PlanMetadata group * Move helpers into the store * make staging url check more specific * make cloud state nullable * fix linting issue * swap mockup date for endpoint * Make getCurrentPlan async * asas * Improvements * small improvements * chore: resolve conflicts * make sure there is data before calculating trial expiration * Fix issue with component not loading on first page load * type safety improvements * apply component ui feedback * fix linting issue * chore: clean up unnecessary change from merge conflict * feat: Block api feature using licenses, show notice page for trial cloud users (#6187) * rename planSpec to plan * Remove instance property as it's not needed anymore * Flatten plan object * remove console.log * feat: disable api using license * feat: add api page * chore: resolve conflicts * chore: resolve conflicts * feat: update and refactor a bit * fix: update endpoints * fix: update endpoints * fix: use host * feat: update copy * fix linting issues --------- Co-authored-by: ricardo <ricardoespinoza105@gmail.com> * add pluralization to days left text --------- Co-authored-by: Mutasem <mutdmour@gmail.com> Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
import Modals from '@/components/Modals.vue';
|
||||
import LoadingView from '@/views/LoadingView.vue';
|
||||
import Telemetry from '@/components/Telemetry.vue';
|
||||
import { HIRING_BANNER, LOCAL_STORAGE_THEME, VIEWS } from '@/constants';
|
||||
import { CLOUD_TRIAL_CHECK_INTERVAL, HIRING_BANNER, LOCAL_STORAGE_THEME, VIEWS } from '@/constants';
|
||||
|
||||
import { userHelpers } from '@/mixins/userHelpers';
|
||||
import { loadLanguage } from '@/plugins/i18n';
|
||||
@@ -42,10 +42,12 @@ import { useUsersStore } from '@/stores/users.store';
|
||||
import { useRootStore } from '@/stores/n8nRoot.store';
|
||||
import { useTemplatesStore } from '@/stores/templates.store';
|
||||
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
|
||||
import { useCloudPlanStore } from './stores/cloudPlan.store';
|
||||
import { useHistoryHelper } from '@/composables/useHistoryHelper';
|
||||
import { newVersions } from '@/mixins/newVersions';
|
||||
import { useRoute } from 'vue-router/composables';
|
||||
import { useVersionControlStore } from '@/stores/versionControl.store';
|
||||
import { useUsageStore } from '@/stores/usage.store';
|
||||
import { useExternalHooks } from '@/composables';
|
||||
import { defineComponent } from 'vue';
|
||||
|
||||
@@ -75,6 +77,8 @@ export default defineComponent({
|
||||
useUIStore,
|
||||
useUsersStore,
|
||||
useVersionControlStore,
|
||||
useCloudPlanStore,
|
||||
useUsageStore,
|
||||
),
|
||||
defaultLocale(): string {
|
||||
return this.rootStore.defaultLocale;
|
||||
@@ -185,6 +189,25 @@ export default defineComponent({
|
||||
window.document.body.classList.add(`theme-${theme}`);
|
||||
}
|
||||
},
|
||||
async checkForCloudPlanData(): Promise<void> {
|
||||
try {
|
||||
await this.cloudPlanStore.getOwnerCurrentPLan();
|
||||
if (!this.cloudPlanStore.userIsTrialing) return;
|
||||
await this.cloudPlanStore.getInstanceCurrentUsage();
|
||||
this.startPollingInstanceUsageData();
|
||||
} catch {}
|
||||
},
|
||||
startPollingInstanceUsageData() {
|
||||
const interval = setInterval(async () => {
|
||||
try {
|
||||
await this.cloudPlanStore.getInstanceCurrentUsage();
|
||||
if (this.cloudPlanStore.trialExpired || this.cloudPlanStore.allExecutionsUsed) {
|
||||
clearTimeout(interval);
|
||||
return;
|
||||
}
|
||||
} catch {}
|
||||
}, CLOUD_TRIAL_CHECK_INTERVAL);
|
||||
},
|
||||
},
|
||||
async mounted() {
|
||||
this.setTheme();
|
||||
@@ -193,6 +216,7 @@ export default defineComponent({
|
||||
this.authenticate();
|
||||
this.redirectIfNecessary();
|
||||
void this.checkForNewVersions();
|
||||
void this.checkForCloudPlanData();
|
||||
|
||||
this.loading = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user