Skip to content

Commit 7b0c03a

Browse files
arcbtcmotorina0
authored andcommitted
feat: destroy for subscriptions, only works AFTER subscription is ended
1 parent 8979f8f commit 7b0c03a

1 file changed

Lines changed: 44 additions & 4 deletions

File tree

src/components/tables/InstancesTable.vue

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,13 +166,19 @@
166166
class="q-ml-sm"
167167
flat
168168
dense
169-
:disable="props.row.enabled"
169+
:disable="
170+
props.row.enabled || props.row.hasActiveFiatSubscription
171+
"
170172
>
171173
<q-tooltip class="bg-indigo" :offset="[10, 10]">
172174
<span v-if="props.row.enabled">
173175
Destroy: you can only destroy a disabled instance. Please
174176
disable it first.
175177
</span>
178+
<span v-else-if="props.row.hasActiveFiatSubscription">
179+
Please end the subscription from /subscriptions for this
180+
instance first
181+
</span>
176182
<span v-else>
177183
Destroy: destroying will delete your instance and every bit of
178184
data.</span
@@ -2318,13 +2324,22 @@ export default defineComponent({
23182324
)
23192325
},
23202326
destroyInstance: function (id) {
2321-
if (this.data.find(i => i.id === id)?.enabled) {
2327+
const instance = this.data.find(i => i.id === id)
2328+
2329+
if (instance?.enabled) {
23222330
return this.q.notify({
23232331
message:
23242332
'You can only destroy a disabled instance. Please disable it first.',
23252333
color: 'warning'
23262334
})
23272335
}
2336+
if (instance?.hasActiveFiatSubscription) {
2337+
return this.q.notify({
2338+
message:
2339+
'Please end the subscription from /subscriptions for this instance first',
2340+
color: 'warning'
2341+
})
2342+
}
23282343
this.confirm(
23292344
`Destroy ${id}`,
23302345
'Are you sure you want to destroy?' +
@@ -2487,12 +2502,37 @@ export default defineComponent({
24872502
return false
24882503
}
24892504
},
2505+
getActiveFiatSubscriptionInstanceIds(subscriptions = []) {
2506+
return new Set(
2507+
subscriptions
2508+
.filter(subscription => {
2509+
if (!subscription) {
2510+
return false
2511+
}
2512+
2513+
if (+subscription.ended_at) {
2514+
return false
2515+
}
2516+
2517+
return true
2518+
})
2519+
.map(subscription => `${subscription.instance_id}`)
2520+
)
2521+
},
24902522
refreshState: async function () {
24912523
try {
2492-
const {data} = await saas.getInstances()
2524+
const [{data: instancesData}, {data: subscriptionsData}] =
2525+
await Promise.all([saas.getInstances(), saas.getUserSubscriptions()])
24932526
24942527
await this.serverStatus()
2495-
const tableData = (data || []).map(i => saas.mapInstance(i))
2528+
const activeFiatSubscriptionInstanceIds =
2529+
this.getActiveFiatSubscriptionInstanceIds(subscriptionsData || [])
2530+
const tableData = (instancesData || []).map(i => ({
2531+
...saas.mapInstance(i),
2532+
hasActiveFiatSubscription: activeFiatSubscriptionInstanceIds.has(
2533+
`${i.id}`
2534+
)
2535+
}))
24962536
24972537
this.activityStats[0].value = tableData.length
24982538
this.activityStats[1].value = tableData.filter(

0 commit comments

Comments
 (0)