# Tauri Plugin Torch
This project is a Tauri plugin which allows for flash control on iOS and Android devices with a consistent API.
| Linux | x |
| Windows | x |
| macOS | x |
| Android | ✓ |
| iOS | ✓ |
## API
### Available Commands
```ts
import { ping, toggle, check } from "tauri-plugin-torch-api";
async function toggleTorch() {
const isTorchOn = await check();
if (isTorchOn) {
await toggle(false);
updateResponse("Torch is off");
} else {
await toggle(true);
updateResponse("Torch is on");
}
}
async function onTorch() {
toggle(true).then(updateResponse).catch(updateResponse);
}
async function offTorch() {
toggle(false).then(updateResponse).catch(updateResponse);
}
```
### Default Permission
This permission set configures which
torch features are by default exposed.
#### Granted Permissions
It allows access to all torch commands.
#### This default permission set includes the following:
- `allow-toggle`
- `allow-check`
### Permission Table
<table>
<tr>
<th>Identifier</th>
<th>Description</th>
</tr>
<tr>
<td>
`torch:allow-check`
</td>
<td>
Enable the check command.
</td>
</tr>
<tr>
<td>
`torch:deny-check`
</td>
<td>
Disable the check command.
</td>
</tr>
<tr>
<td>
`torch:allow-toggle`
</td>
<td>
Enable the toggle command.
</td>
</tr>
<tr>
<td>
`torch:deny-toggle`
</td>
<td>
Disable the toggle command.
</td>
</tr>
</table>
# Contribution
## Notes
1. Ping command is boilerplate code, ignore it, I kept it in the reference, might remove later.
2. Permission tomls had to be added manually to `./permissions/autogenerated/commands`, contrary to what the tauri documentation says.
3. Be sure to deploy the app using `pnpm tauri [android|ios] dev` to get the best experience. The IDEs are not aware of the Tauri build process and will not work as expected.
4. Do it beforehand development because otherwise tauri packages will not be generated for the swift and kotlin code.
### Development Troubleshooting
- Be sure to open the `android` and `ios` folders in their respective IDEs (Android Studio and XCode) to get the best development experience.
- Do not deploy the app using the buttons provided in the IDEs, use the Tauri CLI instead. The IDEs are not aware of the Tauri build process and will not work as expected.
- You must build the plugin and guest-js before deploying the app using `cargo build` and `pnpm build` respectively.
- The tauri imports may give import errors in the IDEs if you dont use the plugin and deploy the app first.
## Looking for
- Automated Testing Suite - Implementation for testing suite of the plugin would be highly appreciated
- Documentation - Doc comments are lackluster rn for a library project
## Physical Testing
I have tested the plugin on a Pixel 8 Pro (Android 15) and iPhone 13 (iOS 18) and it works as expected. The implementations are really generic and should work on all devices. If you have a device that is not working, please open an issue.