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:
- Source selection dialog - asks where to download from (Stable Release, Main Branch, or PR Build)
- 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
impl OtaView
Sourcepub fn new(github_token: Option<SecretString>, context: &mut Context) -> OtaView
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 inSecretStringfor secure handling. Not required for stable release downloads.context- Application context containing fonts and device information
Sourcefn build_source_selection_dialog(context: &mut Context) -> Dialog
fn build_source_selection_dialog(context: &mut Context) -> Dialog
Builds the source selection dialog.
Sourcefn build_pr_input_screen(&mut self, context: &mut Context)
fn build_pr_input_screen(&mut self, context: &mut Context)
Builds the PR input screen with title, input field, and keyboard.
Sourcefn toggle_keyboard(
&mut self,
visible: bool,
hub: &Hub,
rq: &mut RenderQueue,
context: &mut Context,
)
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 visiblehub- Event hub for sending eventsrq- Render queue for UI updatescontext- Application context
Sourcefn handle_pr_submission(&mut self, text: &str, hub: &Hub)
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 numberhub- Event hub for sending notifications
Sourcefn handle_outside_tap(&self, tap_position: Point, context: &Context, hub: &Hub)
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 occurredcontext- Application context containing keyboard rectanglehub- Event hub for sending close event
Sourcefn require_github_token(&self, hub: &Hub, check_source: &str) -> bool
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.
Sourcefn start_pr_download(&mut self, pr_number: u32, hub: &Hub)
fn start_pr_download(&mut self, pr_number: u32, hub: &Hub)
Initiates the download process in a background thread.
Spawns a thread that:
- Creates an OTA client
- Downloads the artifact for the specified PR
- Extracts and deploys KoboRoot.tgz
- Sends notification events on success or failure
§Arguments
pr_number- The GitHub pull request number to downloadhub- Event hub for sending notifications and status updates
Sourcefn start_default_branch_download(&mut self, hub: &Hub)
fn start_default_branch_download(&mut self, hub: &Hub)
Initiates the default branch download in a background thread.
Spawns a thread that:
- Creates an OTA client
- Downloads the latest artifact from the default branch
- Extracts and deploys KoboRoot.tgz
- Sends notification events on success or failure
§Arguments
hub- Event hub for sending notifications and status updates
Sourcefn start_stable_release_download(&mut self, hub: &Hub)
fn start_stable_release_download(&mut self, hub: &Hub)
Initiates the stable release download in a background thread.
Spawns a thread that:
- Creates an OTA client
- Downloads the latest stable release asset
- Extracts and deploys KoboRoot.tgz
- 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
impl View for OtaView
fn handle_event( &mut self, evt: &Event, hub: &Hub, _bus: &mut Bus, rq: &mut RenderQueue, context: &mut Context, ) -> bool
fn render( &self, _fb: &mut dyn Framebuffer, _rect: Rectangle, _fonts: &mut Fonts, )
fn rect(&self) -> &Rectangle
fn rect_mut(&mut self) -> &mut Rectangle
fn children(&self) -> &Vec<Box<dyn View>>
fn children_mut(&mut self) -> &mut Vec<Box<dyn View>>
fn id(&self) -> Id
fn view_id(&self) -> Option<ViewId>
fn resize( &mut self, _rect: Rectangle, _hub: &Hub, _rq: &mut RenderQueue, _context: &mut Context, )
fn render_rect(&self, _rect: &Rectangle) -> Rectangle
fn child(&self, index: usize) -> &dyn View
fn child_mut(&mut self, index: usize) -> &mut dyn View
fn len(&self) -> usize
fn might_skip(&self, _evt: &Event) -> bool
fn might_rotate(&self) -> bool
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.