OtaView

Struct OtaView 

Source
pub struct OtaView {
    id: Id,
    rect: Rectangle,
    children: Vec<Box<dyn View>>,
    view_id: ViewId,
    github_token: Option<SecretString>,
    keyboard_index: Option<usize>,
}
Expand description

UI view for downloading and installing OTA updates from GitHub.

Manages two screens:

  1. Source selection dialog - asks where to download from (Stable Release, Main Branch, or PR Build)
  2. PR input screen - prompts for PR number input (only for PR Build)

The view transitions between screens based on user selections. Selecting Stable Release or Main Branch starts the download immediately, while PR Build first shows the input screen for a PR number.

§Security

The GitHub token is securely stored using SecretString to prevent accidental exposure in logs or debug output.

Fields§

§id: Id§rect: Rectangle§children: Vec<Box<dyn View>>§view_id: ViewId§github_token: Option<SecretString>§keyboard_index: Option<usize>

Implementations§

Source§

impl OtaView

Source

pub fn new(github_token: Option<SecretString>, context: &mut Context) -> OtaView

Creates a new OTA view with the configured GitHub token.

Initially displays the source selection dialog asking where to download updates from.

§Arguments
  • github_token - Optional GitHub personal access token wrapped in SecretString for secure handling. Not required for stable release downloads.
  • context - Application context containing fonts and device information
Source

fn build_source_selection_dialog(context: &mut Context) -> Dialog

Builds the source selection dialog.

Source

fn build_pr_input_screen(&mut self, context: &mut Context)

Builds the PR input screen with title, input field, and keyboard.

Source

fn toggle_keyboard( &mut self, visible: bool, hub: &Hub, rq: &mut RenderQueue, context: &mut Context, )

Toggles keyboard visibility based on focus state.

§Arguments
  • visible - Whether the keyboard should be visible
  • hub - Event hub for sending events
  • rq - Render queue for UI updates
  • context - Application context
Source

fn handle_pr_submission(&mut self, text: &str, hub: &Hub)

Handles submission of PR number from input field.

Validates the input, initiates download if valid, and closes the view.

§Arguments
  • text - The input text to parse as PR number
  • hub - Event hub for sending notifications
Source

fn handle_outside_tap(&self, tap_position: Point, context: &Context, hub: &Hub)

Handles tap gesture outside the dialog and keyboard areas.

Closes the view when user taps outside to dismiss.

§Arguments
  • tap_position - The position where the tap occurred
  • context - Application context containing keyboard rectangle
  • hub - Event hub for sending close event
Source

fn require_github_token(&self, hub: &Hub, check_source: &str) -> bool

Validates that a GitHub token is configured.

Returns true if a token is present. If not, sends a notification explaining that the token is required.

Source

fn start_pr_download(&mut self, pr_number: u32, hub: &Hub)

Initiates the download process in a background thread.

Spawns a thread that:

  1. Creates an OTA client
  2. Downloads the artifact for the specified PR
  3. Extracts and deploys KoboRoot.tgz
  4. Sends notification events on success or failure
§Arguments
  • pr_number - The GitHub pull request number to download
  • hub - Event hub for sending notifications and status updates
Source

fn start_default_branch_download(&mut self, hub: &Hub)

Initiates the default branch download in a background thread.

Spawns a thread that:

  1. Creates an OTA client
  2. Downloads the latest artifact from the default branch
  3. Extracts and deploys KoboRoot.tgz
  4. Sends notification events on success or failure
§Arguments
  • hub - Event hub for sending notifications and status updates
Source

fn start_stable_release_download(&mut self, hub: &Hub)

Initiates the stable release download in a background thread.

Spawns a thread that:

  1. Creates an OTA client
  2. Downloads the latest stable release asset
  3. Extracts and deploys KoboRoot.tgz
  4. Sends notification events on success or failure

GitHub authentication is not required for this operation.

§Arguments
  • hub - Event hub for sending notifications and status updates

Trait Implementations§

Source§

impl View for OtaView

Source§

fn handle_event( &mut self, evt: &Event, hub: &Hub, _bus: &mut Bus, rq: &mut RenderQueue, context: &mut Context, ) -> bool

Source§

fn render( &self, _fb: &mut dyn Framebuffer, _rect: Rectangle, _fonts: &mut Fonts, )

Source§

fn rect(&self) -> &Rectangle

Source§

fn rect_mut(&mut self) -> &mut Rectangle

Source§

fn children(&self) -> &Vec<Box<dyn View>>

Source§

fn children_mut(&mut self) -> &mut Vec<Box<dyn View>>

Source§

fn id(&self) -> Id

Source§

fn view_id(&self) -> Option<ViewId>

Source§

fn resize( &mut self, _rect: Rectangle, _hub: &Hub, _rq: &mut RenderQueue, _context: &mut Context, )

Source§

fn render_rect(&self, _rect: &Rectangle) -> Rectangle

Source§

fn child(&self, index: usize) -> &dyn View

Source§

fn child_mut(&mut self, index: usize) -> &mut dyn View

Source§

fn len(&self) -> usize

Source§

fn might_skip(&self, _evt: &Event) -> bool

Source§

fn might_rotate(&self) -> bool

Source§

fn is_background(&self) -> bool

Auto Trait Implementations§

§

impl Freeze for OtaView

§

impl !RefUnwindSafe for OtaView

§

impl !Send for OtaView

§

impl !Sync for OtaView

§

impl Unpin for OtaView

§

impl !UnwindSafe for OtaView

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more