Skip to content

Commit 3245d14

Browse files
authored
refactor(core): remove app module (#6895)
1 parent 2cc282c commit 3245d14

File tree

12 files changed

+53
-285
lines changed

12 files changed

+53
-285
lines changed

.changes/move-app.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"api": patch
3+
"tauri": patch
4+
---
5+
6+
Moved the `app` feature to its own plugin in the plugins-workspace repository.

core/tauri/scripts/bundle.global.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/tauri/src/endpoints.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ use serde_json::Value as JsonValue;
1212

1313
use std::sync::Arc;
1414

15-
mod app;
1615
mod event;
1716
#[cfg(os_any)]
1817
mod operating_system;
@@ -54,7 +53,6 @@ impl<T: Serialize> From<T> for InvokeResponse {
5453
#[derive(Deserialize)]
5554
#[serde(tag = "module", content = "message")]
5655
enum Module {
57-
App(app::Cmd),
5856
#[cfg(process_any)]
5957
Process(process::Cmd),
6058
#[cfg(os_any)]
@@ -77,12 +75,6 @@ impl Module {
7775
package_info,
7876
};
7977
match self {
80-
Self::App(cmd) => resolver.respond_async(async move {
81-
cmd
82-
.run(context)
83-
.and_then(|r| r.json)
84-
.map_err(InvokeError::from_anyhow)
85-
}),
8678
#[cfg(process_any)]
8779
Self::Process(cmd) => resolver.respond_async(async move {
8880
cmd

core/tauri/src/endpoints/app.rs

Lines changed: 0 additions & 58 deletions
This file was deleted.

core/tauri/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,9 @@ pub use {
303303
scope::*,
304304
};
305305

306+
/// The Tauri version.
307+
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
308+
306309
#[cfg(target_os = "ios")]
307310
#[doc(hidden)]
308311
pub fn log_stdout() {

core/tauri/src/path/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use crate::{
1515
use serde::{de::Error as DeError, Deserialize, Deserializer};
1616
use serde_repr::{Deserialize_repr, Serialize_repr};
1717

18-
#[cfg(path_all)]
18+
#[cfg(any(path_all, test))]
1919
mod commands;
2020
mod error;
2121
pub use error::*;
@@ -340,7 +340,7 @@ pub(crate) fn init<R: Runtime>() -> TauriPlugin<R> {
340340
#[allow(unused_mut)]
341341
let mut builder = Builder::new("path");
342342

343-
#[cfg(path_all)]
343+
#[cfg(any(path_all, test))]
344344
{
345345
builder = builder.invoke_handler(crate::generate_handler![
346346
commands::resolve_directory,

core/tauri/src/scope/ipc.rs

Lines changed: 37 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ impl Scope {
170170

171171
#[cfg(test)]
172172
mod tests {
173+
use serde::Serialize;
174+
173175
use super::RemoteDomainAccessScope;
174176
use crate::{api::ipc::CallbackFn, test::MockRuntime, App, InvokePayload, Manager, Window};
175177

@@ -186,10 +188,10 @@ mod tests {
186188
(app, window)
187189
}
188190

189-
fn assert_ipc_response(
191+
fn assert_ipc_response<R: Serialize>(
190192
window: &Window<MockRuntime>,
191193
payload: InvokePayload,
192-
expected: Result<&str, &str>,
194+
expected: Result<R, &str>,
193195
) {
194196
let callback = payload.callback;
195197
let error = payload.error;
@@ -208,8 +210,8 @@ mod tests {
208210
}
209211
};
210212
let (expected_response, fn_name) = match expected {
211-
Ok(payload) => (payload, callback),
212-
Err(payload) => (payload, error),
213+
Ok(payload) => (serde_json::to_value(payload).unwrap(), callback),
214+
Err(payload) => (serde_json::to_value(payload).unwrap(), error),
213215
};
214216
let expected = format!(
215217
"window[\"_{}\"]({})",
@@ -224,21 +226,19 @@ mod tests {
224226
assert!(evaluated_script.contains(&expected));
225227
}
226228

227-
fn app_version_payload() -> InvokePayload {
229+
fn path_is_absolute_payload() -> InvokePayload {
228230
let callback = CallbackFn(0);
229231
let error = CallbackFn(1);
230232

231233
let mut payload = serde_json::Map::new();
232-
let mut msg = serde_json::Map::new();
233-
msg.insert(
234-
"cmd".into(),
235-
serde_json::Value::String("getAppVersion".into()),
234+
payload.insert(
235+
"path".into(),
236+
serde_json::Value::String(std::env::current_dir().unwrap().display().to_string()),
236237
);
237-
payload.insert("message".into(), serde_json::Value::Object(msg));
238238

239239
InvokePayload {
240-
cmd: "".into(),
241-
tauri_module: Some("App".into()),
240+
cmd: "plugin:path|is_absolute".into(),
241+
tauri_module: None,
242242
callback,
243243
error,
244244
inner: serde_json::Value::Object(payload),
@@ -262,12 +262,13 @@ mod tests {
262262
fn scope_not_defined() {
263263
let (_app, window) = test_context(vec![RemoteDomainAccessScope::new("app.tauri.app")
264264
.add_window("other")
265+
.add_plugin("path")
265266
.enable_tauri_api()]);
266267

267268
window.navigate("https://tauri.app".parse().unwrap());
268-
assert_ipc_response(
269+
assert_ipc_response::<()>(
269270
&window,
270-
app_version_payload(),
271+
path_is_absolute_payload(),
271272
Err(&crate::window::ipc_scope_not_found_error_message(
272273
"main",
273274
"https://tauri.app/",
@@ -279,12 +280,13 @@ mod tests {
279280
fn scope_not_defined_for_window() {
280281
let (_app, window) = test_context(vec![RemoteDomainAccessScope::new("tauri.app")
281282
.add_window("second")
283+
.add_plugin("path")
282284
.enable_tauri_api()]);
283285

284286
window.navigate("https://tauri.app".parse().unwrap());
285-
assert_ipc_response(
287+
assert_ipc_response::<()>(
286288
&window,
287-
app_version_payload(),
289+
path_is_absolute_payload(),
288290
Err(&crate::window::ipc_scope_window_error_message("main")),
289291
);
290292
}
@@ -293,12 +295,13 @@ mod tests {
293295
fn scope_not_defined_for_url() {
294296
let (_app, window) = test_context(vec![RemoteDomainAccessScope::new("github.com")
295297
.add_window("main")
298+
.add_plugin("path")
296299
.enable_tauri_api()]);
297300

298301
window.navigate("https://tauri.app".parse().unwrap());
299-
assert_ipc_response(
302+
assert_ipc_response::<()>(
300303
&window,
301-
app_version_payload(),
304+
path_is_absolute_payload(),
302305
Err(&crate::window::ipc_scope_domain_error_message(
303306
"https://tauri.app/",
304307
)),
@@ -307,43 +310,37 @@ mod tests {
307310

308311
#[test]
309312
fn subdomain_is_not_allowed() {
310-
let (app, mut window) = test_context(vec![
313+
let (_app, mut window) = test_context(vec![
311314
RemoteDomainAccessScope::new("tauri.app")
312315
.add_window("main")
316+
.add_plugin("path")
313317
.enable_tauri_api(),
314318
RemoteDomainAccessScope::new("sub.tauri.app")
315319
.add_window("main")
320+
.add_plugin("path")
316321
.enable_tauri_api(),
317322
]);
318323

319324
window.navigate("https://tauri.app".parse().unwrap());
320-
assert_ipc_response(
321-
&window,
322-
app_version_payload(),
323-
Ok(app.package_info().version.to_string().as_str()),
324-
);
325+
assert_ipc_response(&window, path_is_absolute_payload(), Ok(true));
325326

326327
window.navigate("https://blog.tauri.app".parse().unwrap());
327-
assert_ipc_response(
328+
assert_ipc_response::<()>(
328329
&window,
329-
app_version_payload(),
330+
path_is_absolute_payload(),
330331
Err(&crate::window::ipc_scope_domain_error_message(
331332
"https://blog.tauri.app/",
332333
)),
333334
);
334335

335336
window.navigate("https://sub.tauri.app".parse().unwrap());
336-
assert_ipc_response(
337-
&window,
338-
app_version_payload(),
339-
Ok(app.package_info().version.to_string().as_str()),
340-
);
337+
assert_ipc_response(&window, path_is_absolute_payload(), Ok(true));
341338

342339
window.window.label = "test".into();
343340
window.navigate("https://dev.tauri.app".parse().unwrap());
344-
assert_ipc_response(
341+
assert_ipc_response::<()>(
345342
&window,
346-
app_version_payload(),
343+
path_is_absolute_payload(),
347344
Err(&crate::window::ipc_scope_not_found_error_message(
348345
"test",
349346
"https://dev.tauri.app/",
@@ -353,16 +350,13 @@ mod tests {
353350

354351
#[test]
355352
fn subpath_is_allowed() {
356-
let (app, window) = test_context(vec![RemoteDomainAccessScope::new("tauri.app")
353+
let (_app, window) = test_context(vec![RemoteDomainAccessScope::new("tauri.app")
357354
.add_window("main")
355+
.add_plugin("path")
358356
.enable_tauri_api()]);
359357

360358
window.navigate("https://tauri.app/inner/path".parse().unwrap());
361-
assert_ipc_response(
362-
&window,
363-
app_version_payload(),
364-
Ok(app.package_info().version.to_string().as_str()),
365-
);
359+
assert_ipc_response(&window, path_is_absolute_payload(), Ok(true));
366360
}
367361

368362
#[test]
@@ -372,9 +366,9 @@ mod tests {
372366
]);
373367

374368
window.navigate("https://tauri.app".parse().unwrap());
375-
assert_ipc_response(
369+
assert_ipc_response::<()>(
376370
&window,
377-
app_version_payload(),
371+
path_is_absolute_payload(),
378372
Err(crate::window::IPC_SCOPE_DOES_NOT_ALLOW),
379373
);
380374
}
@@ -386,7 +380,7 @@ mod tests {
386380
.add_plugin(PLUGIN_NAME)]);
387381

388382
window.navigate("https://tauri.app".parse().unwrap());
389-
assert_ipc_response(
383+
assert_ipc_response::<()>(
390384
&window,
391385
plugin_test_payload(),
392386
Err(&format!("plugin {PLUGIN_NAME} not found")),
@@ -400,7 +394,7 @@ mod tests {
400394
]);
401395

402396
window.navigate("https://tauri.app".parse().unwrap());
403-
assert_ipc_response(
397+
assert_ipc_response::<()>(
404398
&window,
405399
plugin_test_payload(),
406400
Err(crate::window::IPC_SCOPE_DOES_NOT_ALLOW),

examples/api/src/views/App.svelte

Lines changed: 0 additions & 33 deletions
This file was deleted.

examples/api/src/views/Welcome.svelte

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<script>
2-
import { getName, getVersion, getTauriVersion } from '@tauri-apps/api/app'
32
import { relaunch, exit } from '@tauri-apps/api/process'
43
54
let version = '0.0.0'
@@ -35,11 +34,6 @@
3534

3635
<br />
3736
<br />
38-
<pre>
39-
App name: <code>{appName}</code>
40-
App version: <code>{version}</code>
41-
Tauri version: <code>{tauriVersion}</code>
42-
</pre>
4337
<br />
4438
<div class="flex flex-wrap gap-1 shadow-">
4539
<button class="btn" on:click={closeApp}>Close application</button>

tooling/api/docs/js-api.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)