Skip to content

Releases: KaioFelps/inertia-rust

v2.4.0

29 Jan 04:15
Compare
Choose a tag to compare

v2.4.0

Added

  • ViteHBSTemplateResolver, which uses Handlebars as template engine.

Changed

  • Merged inner_render and inner_render_with_props methods;
  • Updated the docs for using ViteHBSTemplateResolver by default;
  • Deprecated ViteTemplateResolver.

Removed

  • template_path field and setters from Inertia and InertiaConfigBuilder;

Breaking

Template Resolvers

template_path has been removed from Inertia struct. Now, it's the template resolver's responsability to fetch and
parse the template HTML. This means ViteTemplateResolver now is the one who takes the template path on initialization.

Also, its new method now returns a Result<ViteTemplateResolver, InertiaError> instead of ViteTemplateResolver
directly, since it looks for the root template in the given path and return an error if it can't find the file.

let vite = initialize_vite().await;
- let resolver = ViteTemplateResolver::new(vite);
+ let resolver = ViteTemplateResolver::new(vite, "www/root.html").unwrap();

let inertia = Inertia::new(
    InertiaConfig::builder()
        .set_url("http://localhost:8080")
        .set_version(InertiaVersion::Literal(ASSETS_VERSION.get().unwrap()))
-       .set_template_path("www/root.html")
        .set_template_resolver(Box::new(resolver))
        .enable_ssr()
        .set_ssr_client(SsrClient::new("127.0.0.1", 1000))
        .build(),
);

v2.3.8

28 Jan 20:52
Compare
Choose a tag to compare

v2.3.8

Fixed

  • Add Vary: X-Inertia header to Inertia responses. This fixes some cache-related issues (for instance, a plain JSON
    response when navigating through browser history, instead of the actual HTML rendered page).

v2.3.7

23 Jan 18:55
Compare
Choose a tag to compare

v2.3.7

Fixed

  • Also include deferred and mergeable props from shared props (Inertia Middleware) in the inertia page response.

v2.3.6

21 Jan 01:32
Compare
Choose a tag to compare

v2.3.6

Added

  • Added new features: validator, actix-validator;
  • Added InertiaValidateOrRedirect trait for validating or generating an error redirect
    (if validator feature is enabled);
  • Implemented InertiaValidateOrRedirect for actix-web (if actix-validator is enabled).

Changed

  • Inertia::back_with_errors hashmap keys are now anything that implements ToString trait.

v2.3.5

20 Jan 19:22
Compare
Choose a tag to compare

v2.3.5

Fixed

  • is_inertia_response method.

v2.3.4

20 Jan 19:13
Compare
Choose a tag to compare

v2.3.4

Added

  • @inertia::view_data() directive for ViteTemplateResolver;
  • Inertia::view_data facade method;
  • New view data methods to documentation.

Removed

  • Inertia global view_data struct and related options -- from InertiaConfigBuilder.

v2.3.3

20 Jan 17:01
Compare
Choose a tag to compare

v2.3.3

Added

  • is_inertia_response method.

Changed

  • ReflashTemporarySessionMiddleware implementation in the documentation.

v2.3.2

10 Jan 00:10
Compare
Choose a tag to compare

v2.3.2

Fixed

  • Partial requests would receive props that haven't been requested if only header is empty.
  • InertiaProp::resolve_props would always evaluate lazy props;

v2.3.1

09 Jan 22:12
Compare
Choose a tag to compare

v2.3.1

  • make IntoInertiaError trait public.

v2.3.0

09 Jan 22:02
Compare
Choose a tag to compare

v2.3.0

Added

  • IntoInertiaPropResult trait, which introduces into_inertia_value.

Changed

  • InertiaProp enums now require either Result<Value, InertiaError> or an async callback that returns it;
  • InertiaProp enum constructors automatic serializes and map the error to InertiaError;
  • render_with_props now will immediately return an InertiaError if any prop fails to be resolved.

Breaking Changes

Serializing Props

Instead of calling to_value(...).unwrap(), you must call into_inertia_value into a serializable object.
This applies for InertiaProps which takes a callback and also for any prop that is being instantiating
directly.

use inertia_rust::{
    hashmap,
    prop_resolver,
    InertiaProp,
+   IntoInertiaError;
};
- use serde_json::to_value;

hashmap![
-   "foo" => InertiaProp::Data(to_value("Foo").unwrap()),
+   "foo" => InertiaProp::Data("Foo".into_inertia_value()),
    "users" => InertiaProp::defer(prop_resolver!(
            let users_clone = users.clone(); {
            let counter = TIMES_DEFERRED_RESOLVER_HAS_EXECUTED.get_or_init(|| Arc::new(Mutex::new(0)));
            *counter.lock().unwrap() += 1;

-           to_value(users_clone
+           users_clone
                .clone()
                .iter()
                .skip((page -1)* per_page)
                .take(per_page)
                .cloned()
                .collect::<Vec<_>>()
-           ).unwrap()
+               .into_inertia_value()
        }))
        .into_mergeable(),
        "permissions" => InertiaProp::merge(permissions.into_iter().skip((page-1)*per_page).take(per_page).collect::<Vec<_>>())
],