Analytics + more bug fixes (#144)

* Analytics + more bug fixes

* debug deadlock

* Fix mostly everything

* merge fixes

* fix rest

* final fixeS
This commit is contained in:
Geometrically
2023-06-19 14:59:06 -07:00
committed by GitHub
parent 84d731b670
commit 1e78a7b6a8
51 changed files with 1285 additions and 491 deletions

View File

@@ -5,7 +5,7 @@ import { Card, DownloadIcon, StopCircleIcon, Avatar, AnimatedLogo, PlayIcon } fr
import { convertFileSrc } from '@tauri-apps/api/tauri'
import InstallConfirmModal from '@/components/ui/InstallConfirmModal.vue'
import { install as pack_install } from '@/helpers/pack'
import { list, remove, run } from '@/helpers/profile'
import { list, run } from '@/helpers/profile'
import {
get_all_running_profile_paths,
get_uuids_by_profile_path,
@@ -16,6 +16,7 @@ import { useFetch } from '@/helpers/fetch.js'
import { handleError } from '@/store/state.js'
import { showInFolder } from '@/helpers/utils.js'
import InstanceInstallModal from '@/components/ui/InstanceInstallModal.vue'
import mixpanel from 'mixpanel-browser'
const props = defineProps({
instance: {
@@ -91,6 +92,13 @@ const install = async (e) => {
props.instance.icon_url
).catch(handleError)
modLoading.value = false
mixpanel.track('PackInstall', {
id: props.instance.project_id,
version_id: versions[0].id,
title: props.instance.title,
source: 'InstanceCard',
})
} else
confirmModal.value.show(
props.instance.project_id,
@@ -99,21 +107,32 @@ const install = async (e) => {
props.instance.icon_url
)
} else {
modInstallModal.value.show(props.instance.project_id, versions)
modInstallModal.value.show(
props.instance.project_id,
versions,
props.instance.title,
props.instance.project_type
)
}
modLoading.value = false
}
const play = async (e) => {
const play = async (e, context) => {
e?.stopPropagation()
modLoading.value = true
uuid.value = await run(props.instance.path).catch(handleError)
modLoading.value = false
playing.value = true
mixpanel.track('InstancePlay', {
loader: props.instance.metadata.loader,
game_version: props.instance.metadata.game_version,
source: context,
})
}
const stop = async (e) => {
const stop = async (e, context) => {
e?.stopPropagation()
playing.value = false
@@ -126,11 +145,13 @@ const stop = async (e) => {
uuids.forEach(async (u) => await kill_by_uuid(u).catch(handleError))
} else await kill_by_uuid(uuid.value).catch(handleError) // If we still have the uuid, just kill it
uuid.value = null
}
mixpanel.track('InstanceStop', {
loader: props.instance.metadata.loader,
game_version: props.instance.metadata.game_version,
source: context,
})
const deleteInstance = async () => {
await remove(props.instance.path).catch(handleError)
uuid.value = null
}
const openFolder = async () => {
@@ -151,7 +172,6 @@ defineExpose({
stop,
seeInstance,
openFolder,
deleteInstance,
addContent,
instance: props.instance,
})
@@ -190,7 +210,7 @@ onUnmounted(() => unlisten())
<div
v-if="props.instance.metadata && playing === false && modLoading === false"
class="install cta button-base"
@click="play"
@click="(e) => play(e, 'InstanceCard')"
>
<PlayIcon />
</div>
@@ -200,7 +220,7 @@ onUnmounted(() => unlisten())
<div
v-else-if="playing === true"
class="stop cta button-base"
@click="stop"
@click="(e) => stop(e, 'InstanceCard')"
@mousehover="checkProcess"
>
<StopCircleIcon />