BlueSky & more on desktop lazurite.stormlightlabs.org/
tauri rust typescript bluesky appview atproto solid
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 189 lines 7.0 kB view raw
1mod actors; 2mod auth; 3mod columns; 4mod commands; 5mod constellation; 6mod conversations; 7mod db; 8mod diagnostics; 9mod drafts; 10mod error; 11mod explorer; 12mod feed; 13mod media; 14mod moderation; 15mod notifications; 16mod search; 17mod settings; 18mod state; 19mod tray; 20 21use commands as cmd; 22use db::initialize_database; 23use state::AppState; 24use tauri::Manager; 25use tauri_plugin_deep_link::DeepLinkExt; 26use tauri_plugin_log::log; 27 28#[cfg_attr(mobile, tauri::mobile_entry_point)] 29pub fn run() { 30 tauri::Builder::default() 31 .setup(|app| { 32 let db_pool = 33 initialize_database(app.handle()).expect("database initialization should succeed during startup"); 34 let app_state = tauri::async_runtime::block_on(AppState::bootstrap(db_pool)) 35 .expect("application state should be bootstrapped from database"); 36 37 app.manage(app_state); 38 39 AppState::spawn_token_refresh_task(app.handle().clone()); 40 notifications::spawn_notification_poll_task(app.handle().clone()); 41 search::spawn_search_sync_task(app.handle().clone()); 42 43 let app_handle = app.handle().clone(); 44 app.deep_link().on_open_url(move |event| { 45 for url in event.urls() { 46 let raw = url.to_string(); 47 let handle = app_handle.clone(); 48 tauri::async_runtime::spawn(async move { 49 if let Err(error) = explorer::emit_explorer_navigation(&handle, &raw).await { 50 log::error!("failed to resolve deep-link explorer target for {raw}: {error}"); 51 } 52 }); 53 } 54 }); 55 56 if let Some(urls) = app.deep_link().get_current()? { 57 for url in urls { 58 let raw = url.to_string(); 59 tauri::async_runtime::block_on(explorer::emit_explorer_navigation(app.handle(), &raw))?; 60 } 61 } 62 63 #[cfg(not(any(target_os = "android", target_os = "ios")))] 64 { 65 tray::setup_tray(app.handle())?; 66 tray::setup_global_shortcut(app.handle())?; 67 } 68 69 Ok(()) 70 }) 71 .plugin(tauri_plugin_notification::init()) 72 .plugin( 73 tauri_plugin_log::Builder::new() 74 .level(tauri_plugin_log::log::LevelFilter::Info) 75 .build(), 76 ) 77 .plugin(tauri_plugin_deep_link::init()) 78 .plugin(tauri_plugin_dialog::init()) 79 .plugin(tauri_plugin_fs::init()) 80 .plugin(tauri_plugin_opener::init()) 81 .plugin(tauri_plugin_global_shortcut::Builder::new().build()) 82 .invoke_handler(tauri::generate_handler![ 83 cmd::get_app_bootstrap, 84 cmd::list_accounts, 85 cmd::login, 86 cmd::logout, 87 cmd::switch_account, 88 cmd::set_active_account, 89 cmd::search_login_suggestions, 90 cmd::get_preferences, 91 cmd::get_profile, 92 cmd::get_feed_generators, 93 cmd::get_timeline, 94 cmd::get_feed, 95 cmd::get_list_feed, 96 cmd::get_post_thread, 97 cmd::get_author_feed, 98 cmd::get_actor_likes, 99 cmd::create_post, 100 cmd::like_post, 101 cmd::unlike_post, 102 cmd::repost, 103 cmd::unrepost, 104 cmd::bookmark_post, 105 cmd::remove_bookmark, 106 cmd::follow_actor, 107 cmd::block_actor, 108 cmd::unfollow_actor, 109 cmd::get_followers, 110 cmd::get_follows, 111 cmd::audit_follows, 112 cmd::batch_unfollow, 113 cmd::update_saved_feeds, 114 cmd::update_feed_view_pref, 115 cmd::list_notifications, 116 cmd::update_seen, 117 cmd::get_unread_count, 118 cmd::explorer::resolve_input, 119 cmd::explorer::describe_server, 120 cmd::explorer::describe_repo, 121 cmd::explorer::list_records, 122 cmd::explorer::get_record, 123 cmd::explorer::export_repo_car, 124 cmd::explorer::fetch_blob_to_temp_file, 125 cmd::explorer::delete_blob_temp_file, 126 cmd::explorer::query_labels, 127 cmd::explorer::get_lexicon_favicons, 128 cmd::explorer::clear_lexicon_favicon_cache, 129 cmd::search::search_posts_network, 130 cmd::search::search_posts, 131 cmd::search::search_actors, 132 cmd::search::search_starter_packs, 133 cmd::search::sync_posts, 134 cmd::search::get_sync_status, 135 cmd::search::list_saved_posts, 136 cmd::search::embed_pending_posts, 137 cmd::search::reindex_embeddings, 138 cmd::search::set_embeddings_enabled, 139 cmd::search::set_embeddings_preflight_seen, 140 cmd::search::get_embeddings_enabled, 141 cmd::search::get_embeddings_config, 142 cmd::search::prepare_embeddings_model, 143 cmd::settings::get_settings, 144 cmd::settings::get_constellation_url, 145 cmd::settings::update_setting, 146 cmd::settings::set_constellation_url, 147 cmd::settings::get_cache_size, 148 cmd::settings::clear_cache, 149 cmd::settings::export_data, 150 cmd::settings::reset_app, 151 cmd::settings::get_log_entries, 152 cmd::media::get_download_directory, 153 cmd::media::set_download_directory, 154 cmd::media::download_image, 155 cmd::media::download_video, 156 cmd::diagnostics::get_account_lists, 157 cmd::diagnostics::get_account_labels, 158 cmd::diagnostics::get_account_blocked_by, 159 cmd::diagnostics::get_account_blocking, 160 cmd::diagnostics::get_account_starter_packs, 161 cmd::diagnostics::get_record_backlinks, 162 cmd::columns::get_columns, 163 cmd::columns::add_column, 164 cmd::columns::remove_column, 165 cmd::columns::reorder_columns, 166 cmd::columns::update_column, 167 cmd::list_convos, 168 cmd::get_convo_for_members, 169 cmd::get_messages, 170 cmd::send_message, 171 cmd::update_read, 172 cmd::drafts::list_drafts, 173 cmd::drafts::get_draft, 174 cmd::drafts::save_draft, 175 cmd::drafts::delete_draft, 176 cmd::drafts::submit_draft, 177 cmd::moderation::get_moderation_prefs, 178 cmd::moderation::set_adult_content_enabled, 179 cmd::moderation::set_label_preference, 180 cmd::moderation::subscribe_labeler, 181 cmd::moderation::unsubscribe_labeler, 182 cmd::moderation::moderate_content, 183 cmd::moderation::get_labeler_policy_definitions, 184 cmd::moderation::create_report, 185 cmd::moderation::get_distribution_channel 186 ]) 187 .run(tauri::generate_context!()) 188 .expect("error while running tauri application"); 189}