Compare commits

...
30 Commits
Author SHA1 Message Date
rizky_denianto 743fc021f6 Merge pull request 'Menyederhanakan cara meminta izin untuk menggunakan plugin' (#26) from pengembangan into main
Reviewed-on: #26
2026-09-12 22:14:22 +07:00
rizky_denianto 24c5d3e1f2 Mengubah urutan rilis agar cargo tidak komplen
Penerbitan Plugin / persiapan (pull_request) Successful in 7s
Penerbitan Plugin / penerbitan (pull_request) Successful in 4m13s
2026-09-12 22:06:17 +07:00
rizky_denianto de72fa5e3e Menyederhanakan cara meminta izin untuk menggunakan plugin
Penerbitan Plugin / persiapan (pull_request) Successful in 6s
Penerbitan Plugin / penerbitan (pull_request) Failing after 4m17s
2026-09-12 21:44:37 +07:00
rizky_denianto a8ff604873 Merge pull request 'Coba memperbaiki tipe data yang tidak terdeteksi di js' (#25) from pengembangan into main
Reviewed-on: #25
2026-09-06 11:57:48 +07:00
rizky_denianto 00aa5a8526 Coba memperbaiki tipe data yang tidak terdeteksi di js
Penerbitan Plugin / persiapan (pull_request) Successful in 35s
Penerbitan Plugin / penerbitan (pull_request) Successful in 4m4s
2026-09-06 11:38:43 +07:00
rizky_denianto d497b68bb7 Merge pull request 'Menggunakan nama variabel sesuai dengan nama kelas' (#24) from pengembangan into main
Reviewed-on: #24
2026-09-05 16:37:07 +07:00
rizky_denianto 432a34540d Menggunakan nama variabel sesuai dengan nama kelas
Penerbitan Plugin / persiapan (pull_request) Successful in 5s
Penerbitan Plugin / penerbitan (pull_request) Successful in 3m47s
2026-09-05 16:00:59 +07:00
rizky_denianto 09ac478ae3 Merge pull request 'Menambah deskripsi di README.md' (#23) from pengembangan into main
Reviewed-on: #23
2026-09-04 01:45:16 +07:00
rizky_denianto 923540934e Melakukan pembangunan citra terlebih dahulu sebelum diterbitkan
Penerbitan Plugin / persiapan (pull_request) Successful in 5s
Penerbitan Plugin / penerbitan (pull_request) Successful in 3m28s
2026-09-04 01:38:26 +07:00
rizky_denianto 30120dacb2 Mengubah payload menjadi muatan 2026-09-04 01:18:49 +07:00
rizky_denianto f0b237d2a2 Menambah deskripsi di README.md
Penerbitan Plugin / persiapan (pull_request) Successful in 5s
Penerbitan Plugin / penerbitan (pull_request) Successful in 4m29s
2026-09-04 00:29:13 +07:00
rizky_denianto c72613bd76 Merge pull request 'Meletakkan argumen alamat ke variabel alamat' (#22) from pengembangan into main
Reviewed-on: #22
2026-09-03 23:25:29 +07:00
rizky_denianto cd139ab7c7 Meletakkan argumen alamat ke variabel alamat
Penerbitan Plugin / persiapan (pull_request) Successful in 5s
Penerbitan Plugin / penerbitan (pull_request) Successful in 3m51s
2026-09-03 23:06:13 +07:00
rizky_denianto 6f9ac2f9e3 Merge pull request 'Menambah keterangan sistem operasi yang didukung' (#21) from pengembangan into main
Reviewed-on: #21
2026-09-02 23:18:59 +07:00
rizky_denianto 0bf140dff2 Sedikit merapihkan kode
Penerbitan Plugin / persiapan (pull_request) Successful in 4s
Penerbitan Plugin / penerbitan (pull_request) Successful in 4m58s
2026-09-02 23:11:58 +07:00
rizky_denianto 9787d1619e Menambah keterangan sistem operasi yang didukung 2026-09-02 21:44:28 +07:00
rizky_denianto c5904331d3 Merge pull request 'Memperbarui paket dan mencoba menerbitkan peti cargo' (#20) from pengembangan into main
Reviewed-on: #20
2026-09-02 01:09:33 +07:00
rizky_denianto 6553e7ead7 Menaikkan versi aplikasi
Penerbitan Plugin / persiapan (pull_request) Successful in 5s
Penerbitan Plugin / penerbitan (pull_request) Successful in 4m17s
2026-09-02 01:03:45 +07:00
rizky_denianto beb7264180 Menambah paket libudev-dev
Penerbitan Plugin / persiapan (pull_request) Successful in 5s
Penerbitan Plugin / penerbitan (pull_request) Failing after 2m17s
2026-09-02 00:59:19 +07:00
rizky_denianto 84d630dd38 Mengunduh paket untuk membangun citra tauri
Penerbitan Plugin / persiapan (pull_request) Successful in 5s
Penerbitan Plugin / penerbitan (pull_request) Failing after 3m37s
2026-09-02 00:53:25 +07:00
rizky_denianto d41a34ab1d Menghapus berkas sisa penerbitan paket npm
Penerbitan Plugin / persiapan (pull_request) Successful in 4s
Penerbitan Plugin / penerbitan (pull_request) Failing after 1m33s
2026-09-02 00:35:18 +07:00
rizky_denianto 55a36875c8 Menyamakan versi plugin
Penerbitan Plugin / persiapan (pull_request) Successful in 4s
Penerbitan Plugin / penerbitan (pull_request) Failing after 1m26s
2026-09-02 00:28:00 +07:00
rizky_denianto 32562daf27 Menambah pengunduhan Rust
Penerbitan Plugin / persiapan (pull_request) Successful in 4s
Penerbitan Plugin / penerbitan (pull_request) Failing after 1m20s
2026-09-02 00:24:39 +07:00
rizky_denianto 98ae6c5e28 Menggunakan kembali kunci penerbitan
Penerbitan Plugin / persiapan (pull_request) Successful in 4s
Penerbitan Plugin / penerbitan (pull_request) Failing after 1m4s
2026-09-02 00:19:42 +07:00
rizky_denianto 6cd1a44b19 Menambah versi pnpm
Penerbitan Plugin / persiapan (pull_request) Successful in 6s
Penerbitan Plugin / penerbitan (pull_request) Failing after 35s
2026-09-02 00:17:10 +07:00
rizky_denianto a4cb3a1ede Memperbarui paket dan mencoba menerbitkan peti cargo
Penerbitan Plugin / persiapan (pull_request) Successful in 20s
Penerbitan Plugin / penerbitan (pull_request) Failing after 17s
2026-09-01 23:08:57 +07:00
rizky_denianto 1754b6a812 Merge pull request 'Memperbaiki payload untuk fungsi kirim' (#19) from pengembangan into main
Penerbitan Plugin / persiapan (push) Has been skipped
Penerbitan Plugin / penerbitan (push) Has been skipped
Reviewed-on: #19
2026-08-11 00:59:09 +07:00
rizky_denianto 13d99a25c2 Pembaruan paket
Penerbitan Plugin / persiapan (pull_request) Successful in 14s
Penerbitan Plugin / penerbitan (pull_request) Successful in 30s
2026-08-11 00:56:07 +07:00
rizky_denianto 028cb90bff Menaikkan versi program
Penerbitan Plugin / persiapan (pull_request) Successful in 15s
Penerbitan Plugin / penerbitan (pull_request) Successful in 31s
2026-08-11 00:52:06 +07:00
rizky_denianto 14215a615e Memperbaiki payload untuk fungsi kirim 2026-08-11 00:50:47 +07:00
12 changed files with 108 additions and 51 deletions

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
[registry]
default = "gitea"
[registries.gitea]
index = "sparse+https://git.segubi.com/api/packages/segubi/cargo/"
+33 -8
View File
@@ -1,15 +1,12 @@
name: Penerbitan Plugin
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
types: ["opened", "synchronize"]
jobs:
persiapan:
if: "!contains(gitea.event.head_commit.message, 'Merge pull request')"
runs-on: ubuntu-latest
outputs:
organisasi: ${{ steps.var.outputs.organisasi }}
@@ -24,19 +21,47 @@ jobs:
runs-on: ubuntu-latest
needs: persiapan
steps:
- name: Unduh paket untuk membangun citra
run: |
apt update -y
sudo apt install -y libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
libudev-dev
apt clean -y
- name: Unduh program
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Unduh pnpm
uses: pnpm/action-setup@v6
- name: Unduh Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
version: 10
toolchain: stable
rustflags: "-A warnings"
- name: Unggah program
- name: Penerbitan peti Cargo
run: |
cargo publish
env:
CARGO_REGISTRIES_GITEA_TOKEN: Bearer ${{ secrets.KUNCI_PENERBITAN }}
- name: Unduh pnpm
uses: pnpm/setup@v2
with:
version: 11
- name: Penerbitan paket NPM
run: |
pnpm i
npm config set @${{ needs.persiapan.outputs.organisasi }}:registry=https://${{ vars.ALAMAT_GITEA }}/api/packages/${{ needs.persiapan.outputs.organisasi }}/npm/
npm config set -- '//${{ vars.ALAMAT_GITEA }}/api/packages/${{ needs.persiapan.outputs.organisasi }}/npm/:_authToken' "${{ secrets.KUNCI_PENERBITAN }}"
npm publish
rm -rf pnpm-lock.yaml .pnpm-store/
+11 -4
View File
@@ -1,10 +1,10 @@
[package]
name = "tauri-plugin-bluclas"
version = "0.1.8"
version = "0.1.23"
authors = [ "Rizky Denianto" ]
description = ""
description = "Program sederhana untuk interaksi dengan bluetooth classic"
edition = "2024"
rust-version = "1.94.1"
rust-version = "1.98.0"
exclude = ["/examples", "/dist-js", "/guest-js", "/node_modules"]
links = "tauri-plugin-bluclas"
@@ -17,11 +17,18 @@ incremental = false
strip = "symbols"
debug = false
[package.metadata.platforms.support]
windows = { level = "full" }
linux = { level = "full" }
macos = { level = "none" }
android = { level = "full" }
ios = { level = "none" }
[dependencies]
tauri = { version = "2.11.5" }
serde = "1.0"
thiserror = "2"
serialport = "4.9.0"
serialport = "4.10.1"
[build-dependencies]
tauri-plugin = { version = "2.6.3", features = ["build"] }
+2
View File
@@ -1 +1,3 @@
# Tauri Plugin bluclas
Program sederhana untuk interaksi dengan bluetooth classic
+23 -18
View File
@@ -37,11 +37,11 @@ class KirimArgs {
]
)
class BluclasPlugin(private val activity: Activity) : Plugin(activity) {
private val uuidSpp: UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")
private val uuid: UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")
private val adapter: BluetoothAdapter? = this.activity.getSystemService(BluetoothManager::class.java).getAdapter()
private var soket: BluetoothSocket? = null
private var keluaran: OutputStream? = null
private val bluetoothAdapter: BluetoothAdapter? = this.activity.getSystemService(BluetoothManager::class.java).getAdapter()
private var bluetoothSocket: BluetoothSocket? = null
private var outputStream: OutputStream? = null
@Command
override fun checkPermissions(invoke: Invoke) {
@@ -55,13 +55,13 @@ class BluclasPlugin(private val activity: Activity) : Plugin(activity) {
@Command
fun daftarPerangkat(invoke: Invoke) {
if (adapter == null) {
if (bluetoothAdapter == null) {
invoke.reject("Bluetooth tidak didukung")
return
}
val daftarRes = JSArray()
adapter.bondedDevices.map { i ->
bluetoothAdapter.bondedDevices.map { i ->
val res = JSObject()
res.put("nama", i.name ?: "Unknown")
res.put("alamat", i.address)
@@ -74,32 +74,37 @@ class BluclasPlugin(private val activity: Activity) : Plugin(activity) {
}
fun menghubungkanKoneksi(alamat: String) {
val perangkat: BluetoothDevice = adapter!!.getRemoteDevice(alamat)
soket = perangkat.createInsecureRfcommSocketToServiceRecord(uuidSpp)
soket!!.connect()
keluaran = soket!!.outputStream
val bluetoothDevice: BluetoothDevice = bluetoothAdapter!!.getRemoteDevice(alamat)
bluetoothSocket = bluetoothDevice.createInsecureRfcommSocketToServiceRecord(uuid)
bluetoothSocket!!.connect()
outputStream = bluetoothSocket!!.outputStream
}
fun memutusKoneksi() {
keluaran?.close()
keluaran = null
soket?.close()
soket = null
outputStream?.close()
outputStream = null
bluetoothSocket?.close()
bluetoothSocket = null
}
@Command
fun kirim(invoke: Invoke) {
val args = invoke.parseArgs(KirimArgs::class.java)
val alamat = args.alamat
if (alamat.isNullOrEmpty()) {
invoke.resolve()
return
}
try {
menghubungkanKoneksi(args.alamat ?: "")
menghubungkanKoneksi(alamat)
if (keluaran == null) {
if (outputStream == null) {
throw Exception("Tidak ada perangkat yang terhubung")
}
keluaran!!.write(args.data)
keluaran!!.flush()
outputStream!!.write(args.data)
outputStream!!.flush()
} catch (e: Exception) {
memutusKoneksi()
+19 -6
View File
@@ -1,4 +1,21 @@
import { invoke } from "@tauri-apps/api/core";
import {
checkPermissions as checkPermissions_,
invoke,
PermissionState,
requestPermissions as requestPermissions_,
} from "@tauri-apps/api/core";
export async function checkPermissions(): Promise<PermissionState> {
return await checkPermissions_<{ bluetooth: PermissionState }>(
"bluclas",
).then((e) => e.bluetooth);
}
export async function requestPermissions(): Promise<PermissionState> {
return await requestPermissions_<{ bluetooth: PermissionState }>(
"bluclas",
).then((e) => e.bluetooth);
}
export type SDaftarPerangkatBlueclasResponDaftarPerangkat = {
nama: string;
@@ -21,9 +38,5 @@ export type SBlueclasMuatanKirim = {
};
export async function kirim(muatan: SBlueclasMuatanKirim): Promise<null> {
return await invoke<null>("plugin:bluclas|kirim", {
payload: {
value: muatan,
},
});
return await invoke<null>("plugin:bluclas|kirim", { muatan: muatan });
}
+4 -4
View File
@@ -1,8 +1,8 @@
{
"name": "@segubi/tauri-plugin-bluclas-api",
"version": "0.1.8",
"version": "0.1.23",
"author": "Rizky Denianto",
"description": "",
"description": "Program sederhana untuk interaksi dengan bluetooth classic",
"type": "module",
"types": "./dist-js/index.d.ts",
"main": "./dist-js/index.cjs",
@@ -26,8 +26,8 @@
},
"devDependencies": {
"@rollup/plugin-typescript": "^12.3.0",
"rollup": "^4.62.2",
"typescript": "^5.9.3",
"rollup": "^4.63.2",
"typescript": "^6.0.3",
"tslib": "^2.8.1"
}
}
+2 -1
View File
@@ -20,7 +20,8 @@ export default {
plugins: [
typescript({
declaration: true,
declarationDir: dirname(pkg.exports.import)
declarationDir: dirname(pkg.exports.import),
rootDir: 'guest-js'
})
],
external: [
+2 -2
View File
@@ -14,7 +14,7 @@ pub(crate) async fn daftar_perangkat<R: Runtime>(
#[command]
pub(crate) async fn kirim<R: Runtime>(
app: AppHandle<R>,
payload: SBlueclasMuatanKirim,
muatan: SBlueclasMuatanKirim,
) -> Result<()> {
return app.bluclas().kirim(payload);
return app.bluclas().kirim(muatan);
}
+2 -3
View File
@@ -1,11 +1,8 @@
use crate::commands::{daftar_perangkat, kirim};
use tauri::{
Manager, Runtime,
plugin::{Builder, TauriPlugin},
};
pub use models::*;
#[cfg(desktop)]
mod desktop;
#[cfg(mobile)]
@@ -22,6 +19,8 @@ use desktop::Bluclas;
#[cfg(mobile)]
use mobile::Bluclas;
use crate::commands::{daftar_perangkat, kirim};
/// Extensions to [`tauri::App`], [`tauri::AppHandle`] and [`tauri::Window`] to access the bluclas APIs.
pub trait BluclasExt<R: Runtime> {
fn bluclas(&self) -> &Bluclas<R>;
+2 -2
View File
@@ -32,10 +32,10 @@ impl<R: Runtime> Bluclas<R> {
.map_err(Into::into);
}
pub fn kirim(&self, payload: SBlueclasMuatanKirim) -> crate::Result<()> {
pub fn kirim(&self, muatan: SBlueclasMuatanKirim) -> crate::Result<()> {
return self
.0
.run_mobile_plugin("kirim", payload)
.run_mobile_plugin("kirim", muatan)
.map_err(Into::into);
}
}
+3 -3
View File
@@ -1,19 +1,19 @@
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[derive(Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SDaftarPerangkatBlueclasResponDaftarPerangkat {
pub nama: String,
pub alamat: String,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[derive(Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SBlueclasResponDaftarPerangkat {
pub data: Vec<SDaftarPerangkatBlueclasResponDaftarPerangkat>,
}
#[derive(Debug, Deserialize, Serialize)]
#[derive(Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SBlueclasMuatanKirim {
pub alamat: String,