@cryptotaxi247 / CoPilot / commits / 256cd31a

License check improvement (#380)

* refactor: improve mssp feature check * remove comment --------- Co-authored-by: Davide Di Modica <webmaster.ddm@gmail.com>

taylor_socfortress committed Dec 18, 2024 at 09:22 UTC 256cd31a5bddce4faca0dbf5510053bcdf3e4d09
2 files changed +44 -46
backend/app/customers/routes/customers.py
+1 -1
@@ -152,7 +152,7 @@ async def create_customer(
152 logger.info(f"Creating new customer: {customer}")
153 new_customer = Customers(**customer.dict())
154 session.add(new_customer)
155 - await session.commit() # Use await to perform the commit operation asynchronously
155 + await session.commit()
156 return CustomerResponse(
157 customer=customer,
158 success=True,
frontend/src/components/customers/CustomerCreationButton.vue
+43 -45
@@ -1,20 +1,18 @@
1 <template>
2 - <LicenseFeatureCheck
3 - :feature="licenseKey"
4 - :disabled="licenseDisabled"
5 - feedback="tooltip"
6 - @response="
7 - (() => {
8 - licenseChecked = true
9 - licenseResponse = $event
10 - })()
11 - "
12 - >
2 + <div>
3 + <LicenseFeatureCheck v-if="!licenseDisabled" feature="MSSP 5" @response="isMSSP5Enabled = $event" />
4 + <LicenseFeatureCheck v-if="!licenseDisabled" feature="MSSP 10" @response="isMSSP10Enabled = $event" />
5 + <LicenseFeatureCheck
6 + v-if="!licenseDisabled"
7 + feature="MSSP Unlimited"
8 + @response="isMSSPUnlimitedEnabled = $event"
9 + />
10 +
11 <n-button
12 :size="size || 'small'"
13 type="primary"
16 - :loading="!licenseChecked && !licenseDisabled"
17 - :disabled="!licenseChecked || !licenseResponse || disabled"
14 + :loading="licenseLoading && !licenseDisabled"
15 + :disabled="!licenseEnabled || disabled"
16 @click="showAddCustomer = true"
17 >
18 <template #icon>
@@ -22,22 +20,26 @@
20 </template>
21 <div class="flex items-center gap-2">
22 <span>Add Customer</span>
25 - <Icon v-if="!licenseResponse && licenseChecked" :name="LockIcon" :size="14" />
23 + <Icon v-if="!licenseEnabled && !licenseLoading" :name="LockIcon" :size="14" />
24 </div>
25 </n-button>
28 - </LicenseFeatureCheck>
26
30 - <n-drawer
31 - v-model:show="showAddCustomer"
32 - :width="500"
33 - style="max-width: 90vw"
34 - :trap-focus="false"
35 - display-directive="show"
36 - >
37 - <n-drawer-content title="Add Customer" closable :native-scrollbar="false">
38 - <CustomerForm :reset-on-submit="true" @mounted="customerFormCTX = $event" @submitted="emit('submitted')" />
39 - </n-drawer-content>
40 - </n-drawer>
27 + <n-drawer
28 + v-model:show="showAddCustomer"
29 + :width="500"
30 + style="max-width: 90vw"
31 + :trap-focus="false"
32 + display-directive="show"
33 + >
34 + <n-drawer-content title="Add Customer" closable :native-scrollbar="false">
35 + <CustomerForm
36 + :reset-on-submit="true"
37 + @mounted="customerFormCTX = $event"
38 + @submitted="emit('submitted')"
39 + />
40 + </n-drawer-content>
41 + </n-drawer>
42 + </div>
43 </template>
44
45 <script setup lang="ts">
@@ -65,22 +67,27 @@ const LockIcon = "carbon:locked"
67 const AddUserIcon = "carbon:user-follow"
68 const customerFormCTX = ref<{ reset: () => void } | null>(null)
69 const showAddCustomer = ref(false)
68 -
69 -const licenseChecked = ref(!customersCount)
70 -const licenseResponse = ref(!customersCount)
70 +const isMSSP5Enabled = ref<null | boolean>(null)
71 +const isMSSP10Enabled = ref<null | boolean>(null)
72 +const isMSSPUnlimitedEnabled = ref<null | boolean>(null)
73 +const licenseLoading = computed<boolean>(
74 + () => isMSSP5Enabled.value === null || isMSSP10Enabled.value === null || isMSSPUnlimitedEnabled.value === null
75 +)
76 const licenseDisabled = computed<boolean>(() => !customersCount)
72 -const licenseKey = computed<LicenseFeatures>(() => {
73 - let key: LicenseFeatures = "MSSP 5"
77 +const licenseEnabled = computed<boolean>(() => {
78 + if (isMSSPUnlimitedEnabled.value) {
79 + return true
80 + }
81
75 - if (customersCount && customersCount >= 5) {
76 - key = "MSSP 10"
82 + if (isMSSP10Enabled.value && customersCount !== undefined && customersCount < 10) {
83 + return true
84 }
85
79 - if (customersCount && customersCount >= 10) {
80 - key = "MSSP Unlimited"
86 + if (isMSSP5Enabled.value && customersCount !== undefined && customersCount < 5) {
87 + return true
88 }
89
83 - return key
90 + return false
91 })
92
93 watch(showAddCustomer, val => {
@@ -99,13 +106,4 @@ watch(
106 },
107 { immediate: true }
108 )
102 -
103 -watch(
104 - licenseKey,
105 - () => {
106 - licenseResponse.value = !customersCount
107 - licenseChecked.value = !customersCount
108 - },
109 - { immediate: true }
110 -)
109 </script>