Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bugfix: lens updater check #371

Merged
merged 4 commits into from
Mar 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions VERSION.json
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
{
"version": "23.2.4",
"notes": "See full release notes here: https://github.com/a5huynh/spyglass/releases/tag/v2023.2.4",
"pub_date": "2023-02-21T21:39:39Z",
"version": "23.3.1",
"notes": "See full release notes here: https://github.com/spyglass-search/spyglass/releases/tag/v2023.3.1",
"pub_date": "2023-03-10T04:10:25Z",
"platforms": {
"darwin-x86_64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSRk9WYXdDUXphYm5GUFk0djVnV0ZuTzZUWjE3QVpEb3ZoRFJPODRNVlR4UklFZ1oxSDFpeGxKSzZJMmFNZnUybzU2TW1pZm1WV0E4SDROUDNoN2lUTG5PVnZLZnZBRkE0PQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjc2OTM3NzA2CWZpbGU6U3B5Z2xhc3MuYXBwLnRhci5negpncjR3QTlyRzMyQUE5TklvZHp4a0M4Ti83ZWQzK1dkRDJJU0tDMmNtUnVTRTIxWlpabVVNOXNIK2VGZERjdisycVc0N0xNemFjSDFDRjFqUXJCRXVCQT09Cg==",
"url": "https://github.com/a5huynh/spyglass/releases/download/v2023.2.4/Spyglass_universal.app.tar.gz"
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSRk9WYXdDUXphYnIxcFZRYWRnNFhYaytnUzZoQnpoa1RoSXB6YXU0bnZ3VkVJZ0YzOXI5aG1kaCs1bWhQbEs2b2tUTVdGUTAyL1JKeDZaVTh3OG16NWowUGkza01oRkFFPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjc4NDEzMTU3CWZpbGU6U3B5Z2xhc3MuYXBwLnRhci5negpCbGhCVHI0Uk51b1JwVXpaY1dzbE83VE8vRnNJNlFjZGJabmc2bnhTa2l3K0UrR1F1SGtYY292em1hL0dBL29ZZU9DSCtreDltOUt6dVpPZkpCK1ZEdz09Cg==",
"url": "https://github.com/spyglass-search/spyglass/releases/download/v2023.3.1/Spyglass_universal.app.tar.gz"
},
"darwin-aarch64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSRk9WYXdDUXphYm5GUFk0djVnV0ZuTzZUWjE3QVpEb3ZoRFJPODRNVlR4UklFZ1oxSDFpeGxKSzZJMmFNZnUybzU2TW1pZm1WV0E4SDROUDNoN2lUTG5PVnZLZnZBRkE0PQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjc2OTM3NzA2CWZpbGU6U3B5Z2xhc3MuYXBwLnRhci5negpncjR3QTlyRzMyQUE5TklvZHp4a0M4Ti83ZWQzK1dkRDJJU0tDMmNtUnVTRTIxWlpabVVNOXNIK2VGZERjdisycVc0N0xNemFjSDFDRjFqUXJCRXVCQT09Cg==",
"url": "https://github.com/a5huynh/spyglass/releases/download/v2023.2.4/Spyglass_universal.app.tar.gz"
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSRk9WYXdDUXphYnIxcFZRYWRnNFhYaytnUzZoQnpoa1RoSXB6YXU0bnZ3VkVJZ0YzOXI5aG1kaCs1bWhQbEs2b2tUTVdGUTAyL1JKeDZaVTh3OG16NWowUGkza01oRkFFPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjc4NDEzMTU3CWZpbGU6U3B5Z2xhc3MuYXBwLnRhci5negpCbGhCVHI0Uk51b1JwVXpaY1dzbE83VE8vRnNJNlFjZGJabmc2bnhTa2l3K0UrR1F1SGtYY292em1hL0dBL29ZZU9DSCtreDltOUt6dVpPZkpCK1ZEdz09Cg==",
"url": "https://github.com/spyglass-search/spyglass/releases/download/v2023.3.1/Spyglass_universal.app.tar.gz"
},
"linux-x86_64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSRk9WYXdDUXphYm9HZlJheVd3OWRzMklnZ2dPb1I2emxwSHdzdndaRy9nTFJtSXZQNWpHRU9QNzhKVlMrckl2ZUZHUDQxNFFHZ1ZMdHBSL0o5d2tJVU9CVVlMUnBEZXdzPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjc2OTM1MTQ0CWZpbGU6c3B5Z2xhc3NfMjMuMi40X2FtZDY0LkFwcEltYWdlLnRhci5negpNWURsN1ZBcFpwaVpubStYblpXdUFxdVRESmIyUkFJeTRkVVgrcjRGR1JDcTArVHh1SEJqNE10akNZR3RONk1VZTBQcnRDYVYvZ0hZVGNOeUUrLzRDdz09Cg==",
"url": "https://github.com/a5huynh/spyglass/releases/download/v2023.2.4/spyglass_23.2.4_amd64.AppImage.tar.gz"
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSRk9WYXdDUXphYmpOdFdzc29sNGxjYUxUbDRRTlk5YUM3aGI4RlYzZU8xR0JYc2VKZi8zaDgySm1maGpWUlp4V2UrMzB0ekRsSFltSVZKM0J1NUNoZGdlRTBNR0tma1FzPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjc4NDA5ODM1CWZpbGU6c3B5Z2xhc3NfMjMuMy4xX2FtZDY0LkFwcEltYWdlLnRhci5negpId1ZIQzVWY1IzcHBhK1daYml0bmUyQm9nYkQ5bk15dy9jZTA2RnF6S3BrRVVpNUM5dTc5NmwraVE3UmZScklnSXdiNnJsYTJmdG1hVjhXNDhNSTRCZz09Cg==",
"url": "https://github.com/spyglass-search/spyglass/releases/download/v2023.3.1/spyglass_23.3.1_amd64.AppImage.tar.gz"
},
"windows-x86_64": {
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSRk9WYXdDUXphYm9NdjNpdk16d3huK08zUFpWa2NyZUJOVmdrZis1WjR4czFSZWZOOW9ZeXhKNlNzeW1xOW9USk1MRERVdW84VldBRWFtaVpBNWtoMHhGbjJMWWw5VkFzPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjc2OTM2MTUwCWZpbGU6U3B5Z2xhc3NfMjMuMi40X3g2NF9lbi1VUy5tc2kuemlwClVIOWRXakFyd095Wk1hQ2ZSdno4Z3RKVzZnNTFKaDQ2b0FXc1RNUmhuYXRFSzRiaFE3d0wzTFRaQTMycm0wMGhOY3FVNXVKQVZqT1JNOFRob213dENBPT0K",
"url": "https://github.com/a5huynh/spyglass/releases/download/v2023.2.4/Spyglass_23.2.4_x64_en-US.msi.zip"
"signature": "dW50cnVzdGVkIGNvbW1lbnQ6IHNpZ25hdHVyZSBmcm9tIHRhdXJpIHNlY3JldCBrZXkKUlVSRk9WYXdDUXphYmt0dXFxZklsWXdGak4zYWRLSnp5ZzkzbHB4MVV0Tm5mRzErdk9LdjBINnJzOHRVZUF3SHpaOGtNenVkWUFtb2FndTZxRjNjbGRka3F5OS9YbmV4eVFBPQp0cnVzdGVkIGNvbW1lbnQ6IHRpbWVzdGFtcDoxNjc4NDEwNTQyCWZpbGU6U3B5Z2xhc3NfMjMuMy4xX3g2NF9lbi1VUy5tc2kuemlwCkhsMTYzSG9OT0dHTmtBaFNlVzR0QUxMRzY4NGRRalU1enI1NmxOZVE1K2lRMzl4bGxiK2dWYTkwQWY2dlNWZWx3OGl1SDUvejZla2h3QTN0STVPRERRPT0K",
"url": "https://github.com/spyglass-search/spyglass/releases/download/v2023.3.1/Spyglass_23.3.1_x64_en-US.msi.zip"
}
}
}
6 changes: 6 additions & 0 deletions crates/shared/src/metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ pub enum Event {
AuthorizeConnection { api_id: String },
#[strum(serialize = "install_lens")]
InstallLens { lens: String },
#[strum(serialize = "update_lens")]
UpdateLens { lens: String },
#[strum(serialize = "search")]
Search { filters: Vec<String> },
#[strum(serialize = "search_result")]
Expand Down Expand Up @@ -96,6 +98,10 @@ impl Metrics {
data.properties
.insert("lens".into(), lens.to_owned().into());
}
Event::UpdateLens { lens } => {
data.properties
.insert("lens".into(), lens.to_owned().into());
}
Event::Search { filters } => {
data.properties
.insert("filter".into(), filters.to_owned().into());
Expand Down
17 changes: 17 additions & 0 deletions crates/spyglass/src/search/lens.rs
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,23 @@ async fn install_lens_to_path(
log::debug!("add {} to db: {:?}", config.name, model);
log::info!("Installed new lens {}, new? {}", config.name, is_new);

// Find and remove the old lens
if let Ok(list) = std::fs::read_dir(lens_folder.clone()) {
for file in list.flatten() {
let path = file.path();
if path.is_file() {
if let Ok(lens) = ron::de::from_str::<LensConfig>(
&std::fs::read_to_string(path.clone()).unwrap_or_default(),
) {
if lens.name == installable_lens.name {
let _ = std::fs::remove_file(path);
break;
}
}
}
}
}

// Write to disk if we've successfully add to the database
fs::write(lens_folder.join(file_name), file_contents)?;
Ok(())
Expand Down
4 changes: 2 additions & 2 deletions crates/tauri/src/constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ pub const MIN_WINDOW_HEIGHT: f64 = 480.0;

// Check for a new version every 6 hours. 60 seconds * 60 minutes * 6 hours
pub const VERSION_CHECK_INTERVAL_S: u64 = 60 * 60 * 6;
// Check on start & every hour for new lenses
pub const LENS_UPDATE_CHECK_INTERVAL_S: u64 = 60 * 60;
// Check on start & every day for new lenses
pub const LENS_UPDATE_CHECK_INTERVAL_S: u64 = 60 * 60 * 24;

pub const SEARCH_WIN_NAME: &str = "main";
pub const SETTINGS_WIN_NAME: &str = "settings_window";
Expand Down
24 changes: 17 additions & 7 deletions crates/tauri/src/plugins/lens_updater.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ async fn check_for_lens_updates(app_handle: &AppHandle) -> anyhow::Result<()> {
latest.download_url
);

if let Err(e) = handle_install_lens(app_handle, &latest.name).await {
if let Err(e) = handle_install_lens(app_handle, &latest.name, true).await {
log::error!("Unable to install lens: {}", e);
} else {
lenses_updated += 1;
Expand Down Expand Up @@ -144,7 +144,11 @@ async fn get_installed_lenses(app_handle: &AppHandle) -> anyhow::Result<Vec<Lens

/// Helper to install the lens with the specified name. A request to the server
/// will be made to install the lens.
pub async fn handle_install_lens(app_handle: &AppHandle, name: &str) -> anyhow::Result<()> {
pub async fn handle_install_lens(
app_handle: &AppHandle,
name: &str,
is_update: bool,
) -> anyhow::Result<()> {
log::debug!("Lens install requested {}", name);
let mutex = app_handle
.try_state::<rpc::RpcMutex>()
Expand All @@ -154,11 +158,17 @@ pub async fn handle_install_lens(app_handle: &AppHandle, name: &str) -> anyhow::
match rpc.client.install_lens(name.to_string()).await {
Ok(_) => {
if let Some(metrics) = app_handle.try_state::<Metrics>() {
metrics
.track(Event::InstallLens {
let event = if is_update {
Event::InstallLens {
lens: name.to_owned(),
})
.await;
}
} else {
Event::UpdateLens {
lens: name.to_owned(),
}
};

metrics.track(event).await;
}
Ok(())
}
Expand All @@ -173,7 +183,7 @@ pub async fn handle_install_lens(app_handle: &AppHandle, name: &str) -> anyhow::
#[tauri::command]
pub async fn install_lens(win: tauri::Window, name: &str) -> Result<(), String> {
let app_handle = win.app_handle();
let _ = handle_install_lens(&app_handle, name).await;
let _ = handle_install_lens(&app_handle, name, false).await;
let _ = app_handle.emit_all(ClientEvent::RefreshDiscover.as_ref(), Value::Null);
Ok(())
}
Expand Down