Skip to content

Commit

Permalink
add install task
Browse files Browse the repository at this point in the history
  • Loading branch information
niostack committed Oct 8, 2024
1 parent 244b95c commit 80ced49
Show file tree
Hide file tree
Showing 15 changed files with 289 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
},
"package": {
"productName": "TikMatrix",
"version": "1.7.6"
"version": "1.7.7"
},
"tauri": {
"allowlist": {
Expand Down
15 changes: 9 additions & 6 deletions src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
<ManageTrainJobs v-if="selectedItem.name === 'trainJobs' && $refs.page_dialog.open" />
<ManageMessageJobs v-if="selectedItem.name === 'messageJobs' && $refs.page_dialog.open" />
<ManageShareJobs v-if="selectedItem.name === 'shareJobs' && $refs.page_dialog.open" />
<ManageInstallJobs v-if="selectedItem.name === 'installJobs' && $refs.page_dialog.open" />
<ManageFollowJobs v-if="selectedItem.name === 'followJobs' && $refs.page_dialog.open" />
<ManageScrapeJobs v-if="selectedItem.name === 'scrapeFansJobs' && $refs.page_dialog.open" />
<ManageDialog v-if="selectedItem.name === 'dialogWatcher' && $refs.page_dialog.open" />
Expand Down Expand Up @@ -79,13 +80,14 @@ import ManageDevices from './components/device/ManageDevices.vue'
import ManageAccounts from './components/account/ManageAccounts.vue'
import ManageAnalytics from './components/analytics/ManageAnalytics.vue'
import ManageMaterials from './components/material/ManageMaterials.vue'
import ManagePublishJobs from './components/publishJob/ManagePublishJobs.vue'
import ManageMessageJobs from './components/messageJob/ManageMessageJobs.vue'
import ManageShareJobs from './components/shareJob/ManageShareJobs.vue'
import ManageFollowJobs from './components/followJob/ManageFollowJobs.vue'
import ManageScrapeJobs from './components/scrapeJob/ManageScrapeJobs.vue'
import ManagePublishJobs from './components/jobs/ManagePublishJobs.vue'
import ManageMessageJobs from './components/jobs/ManageMessageJobs.vue'
import ManageShareJobs from './components/jobs/ManageShareJobs.vue'
import ManageFollowJobs from './components/jobs/ManageFollowJobs.vue'
import ManageScrapeJobs from './components/jobs/ManageScrapeJobs.vue'
import ManageInstallJobs from './components/jobs/ManageInstallJobs.vue'
import ManageDialog from './components/dialog/ManageDialog.vue'
import ManageTrainJobs from './components/trainJob/ManageTrainJobs.vue'
import ManageTrainJobs from './components/jobs/ManageTrainJobs.vue'
import ManageGroups from './components/group/ManageGroups.vue'
import ManageMusics from './components/music/ManageMusics.vue'
import RegisterSettings from './components/settings/RegisterSettings.vue'
Expand Down Expand Up @@ -131,6 +133,7 @@ export default {
ManagePublishJobs,
ManageMessageJobs,
ManageShareJobs,
ManageInstallJobs,
ManageFollowJobs,
ManageScrapeJobs,
ManageDialog,
Expand Down
6 changes: 5 additions & 1 deletion src/api/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,11 @@ const api = {
capture_video: '/api/video/capture_video',
fission_video: '/api/video/fission_video',
reset_all_index: '/api/device/reset_all_index',
edit_title: '/api/material/update_title'
edit_title: '/api/material/update_title',
install_now: '/api/install_now',
install_job: '/api/install_job',
retry_all_failed_install_job: '/api/install_job/retry_all',
delete_all_install_jobs: '/api/install_job/delete_all'


}
Expand Down
16 changes: 11 additions & 5 deletions src/components/Sidebar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,10 @@ export default {
})
},
async selectApkFile() {
if (this.selection.length == 0) {
this.$emitter.emit('showToast', this.$t('noDevicesSelected'))
return
}
const filePath = await open({
multiple: false, // 是否允许多选文件
directory: false, // 是否选择目录
Expand All @@ -442,16 +446,13 @@ export default {
console.log('Selected file path:', filePath);
this.$service
.install({
file: filePath,
.install_now({
apk_path: filePath,
serials: this.selection
})
.then(res => {
console.log(res)
})
.catch(err => {
console.log(err)
})
},
adb_command(args) {
this.$service
Expand Down Expand Up @@ -834,6 +835,11 @@ export default {
document.addEventListener('paste', () => {
this.pasteToPhone()
});
this.$emitter.on('reload_sidebar', () => {
this.get_menus()
this.get_settings()
this.get_groups()
});
this.get_menus()
this.get_settings()
this.get_groups()
Expand Down
5 changes: 5 additions & 0 deletions src/components/Tasks.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@
@click="$emitter.emit('menuSelected', { name: 'scrapeFansJobs' })">
<font-awesome-icon icon="fas fa-spider" class="h-3 w-3" />{{ $t('scrapeFansJobs') }}
</button>
<button
class="btn btn-sm bg-green-500 hover:bg-green-300 border-0 text-white text-xs block font-normal ml-1 mb-1 min-w-max"
@click="$emitter.emit('menuSelected', { name: 'installJobs' })">
<font-awesome-icon icon="fa fa-download" class="h-3 w-3" />{{ $t('installJobs') }}
</button>
<button
class="btn btn-sm bg-green-500 hover:bg-green-300 border-0 text-white text-xs block font-normal ml-1 mb-1 min-w-max"
@click="$emitter.emit('stop_task')">
Expand Down
File renamed without changes.
199 changes: 199 additions & 0 deletions src/components/jobs/ManageInstallJobs.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
<template>
<div class="w-full">
<Pagination :items="filter_jobs" :searchKeys="['device', 'id', 'device_index']" @refresh="get_install_jobs">
<template v-slot:buttons>
<MyButton @click="retry_all_failed" label="retryAllFaied" />
<MyButton @click="clearAll" label="clearAll" />
<select v-model="searchStatus" class="select select-sm select-bordered max-w-xs ml-2">
<option value="">{{ $t('allStatus') }}</option>
<option value="0">{{ $t('waiting') }}</option>
<option value="1">{{ $t('execing') }}</option>
<option value="2">{{ $t('success') }}</option>
<option value="3">{{ $t('failed') }}</option>
</select>
</template>
<template v-slot:default="slotProps">
<div class="overflow-x-auto">
<table class="table table-sm">
<thead>
<tr>
<th>{{ $t('id') }}</th>
<th>{{ $t('startTime') }}</th>
<th>{{ $t('status') }}</th>
<!-- <th>{{ $t('remark') }}</th> -->
<th>{{ $t('apkPath') }}</th>
<th>{{ $t('device') }}</th>
<th>{{ $t('actions') }}</th>
</tr>
</thead>
<tbody>
<tr v-for="(share_job, index) in slotProps.items" :key="index">
<td>{{ share_job.id }}</td>
<td>{{ share_job.start_time }}</td>
<td>
<div class="badge badge-neutral" v-if="share_job.status == '0'">{{ $t('waiting') }}</div>
<div class="badge badge-primary" v-else-if="share_job.status == '1'">{{ $t('execing') }}</div>
<div class="badge badge-success" v-else-if="share_job.status == '2'">{{ $t('success') }}</div>
<div class="badge badge-error" v-else-if="share_job.status == '3'">{{ $t('failed') }}</div>
</td>
<!-- <td>{{ share_job.remark }}</td> -->
<td>
{{ share_job.apk_path }}
</td>

<td>
<a class="cursor-pointer underline text-blue-500" @click="show_device(share_job.serial)"
v-if="share_job.device_index">{{
share_job.device_index }}</a>
<span v-else class="text text-red-500">{{ $t('offline') }}</span>
</td>
<td>
<div class="space-x-4">
<button class="btn-sm bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
@click="retry(share_job)">{{ $t('retry') }}</button>
<button class="btn-sm bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded"
@click="deleteJob(share_job)">
{{ $t('delete') }}
</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</template>
</Pagination>


</div>
</template>
<script>
import Modal from '../Modal.vue'
import MyButton from '../Button.vue'
import Pagination from '../Pagination.vue'
import { inject } from 'vue'
import { ask } from '@tauri-apps/api/dialog';
export default {
name: 'app',
components: {
MyButton,
Modal,
Pagination
},
setup() {
const devices = inject('devices')
return { devices: devices.list }
},
data() {
return {
jobs: [],
groups: [],
searchStatus: '',
}
},
computed: {
filter_jobs() {
return this.jobs.filter(job => {
if (this.searchStatus) {
return job.status == this.searchStatus
}
return true
})
}
},
methods: {
async clearAll() {
const yes = await ask(this.$t('confirmClearAll'), this.$t('confirm'));
if (yes) {
this.$service
.delete_all_share_jobs()
.then(() => {
this.get_share_jobs()
})
.catch(err => {
console.log(err)
})
}
},
show_device(serial) {
let mydevice = this.devices.find(d => d.serial === serial)
this.$emitter.emit('openDevice', mydevice)
},
get_install_jobs() {
this.currentJob = null
this.$service
.get_install_jobs()
.then(res => {
this.jobs = res.data
this.jobs.forEach(job => {
job.device_index = this.devices.find(device => device.serial === job.serial)?.index
})
this.get_groups()
})
.catch(err => {
console.log(err)
})
},
retry(install_job) {
this.$service
.update_install_job({
id: install_job.id,
status: 0,
})
.then(() => {
this.get_install_jobs()
})
.catch(err => {
console.log(err)
})
},
deleteJob(install_job) {
this.$service
.delete_install_job({
id: install_job.id
})
.then(res => {
console.log(res)
this.get_install_jobs()
})
.catch(err => {
console.log(err)
})
},
get_groups() {
this.$service
.get_groups()
.then(res => {
this.groups = res.data
this.jobs.forEach(install_job => {
if (install_job.group_id === 0) {
install_job.group_name = this.$t('defaultGroup')
return
}
install_job.group_name = this.groups.find(group => group.id === install_job.group_id).name
})
})
.catch(err => {
console.log(err)
})
},
retry_all_failed() {
this.$service
.retry_all_failed_install_job()
.then(() => {
this.get_install_jobs()
})
.catch(err => {
console.log(err)
})
}
},
mounted() {
this.get_install_jobs()
}
}
</script>
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 5 additions & 1 deletion src/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -431,9 +431,13 @@ export const i18n = createI18n({
left_days: 'Left Days',
unlicensed: 'Unlicensed',
updateService: 'Update Service',
updateServiceSuccess: 'Update Service Success'
updateServiceSuccess: 'Update Service Success',
installJobs: 'Install Jobs',
apkPath: 'APK Path'
},
'zh-CN': {
apkPath: 'APK 路径',
installJobs: '安装任务',
updateServiceSuccess: '更新服务成功',
updateService: '更新服务',
unlicensed: '未授权',
Expand Down
12 changes: 11 additions & 1 deletion src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,21 @@ let config = {
}

async function updatePorts() {
const oldPort = localStorage.getItem('port');
const oldWsPort = localStorage.getItem('wsPort');

const port = await readTextFile('port.txt', { dir: BaseDirectory.AppData });
const wsPort = await readTextFile('wsport.txt', { dir: BaseDirectory.AppData });

if (port !== oldPort || wsPort !== oldWsPort) {
console.log('Ports have changed:', { oldPort, oldWsPort, newPort: port, newWsPort: wsPort });
emitter.emit('updateService')
emitter.emit('reload_sidebar')
}

localStorage.setItem('port', port);
localStorage.setItem('wsPort', wsPort);
console.log(port, wsPort)
console.log(port, wsPort);
config.wsUrl = 'ws://127.0.0.1:' + wsPort;
config.apiUrl = 'http://127.0.0.1:' + port;
}
Expand Down
44 changes: 43 additions & 1 deletion src/service/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -798,4 +798,46 @@ export function edit_title(data) {
data,
url: api.edit_title
})
}
}
export function install_now(data) {
return request({
method: 'post',
data,
url: api.install_now
})
}
export function get_install_jobs() {
return request({
method: 'get',
url: api.install_job
})
}
export function delete_install_job({ id }) {
return request({
method: 'delete',
params: { id },
url: api.install_job
})
}
export function update_install_job(data) {
return request({
method: 'put',
data,
url: api.install_job
})
}
export function retry_all_failed_install_job() {
return request({
method: 'get',
url: api.retry_all_failed_install_job
})
}
export function delete_all_install_jobs() {
return request({
method: 'delete',
url: api.delete_all_install_jobs
})
}



0 comments on commit 80ced49

Please sign in to comment.