use std::time::SystemTime; use crate::BrowserTab; #[derive(Clone, Debug, Eq, PartialEq)] pub enum ArchiveSource { ManualClose, AutoArchive, } #[derive(Clone, Debug, Eq, PartialEq)] pub struct ArchivedTab { tab: BrowserTab, archived_at: SystemTime, source: ArchiveSource, } impl ArchivedTab { #[must_use] pub fn new(mut tab: BrowserTab, source: ArchiveSource) -> Self { tab.mark_archived(); Self { tab, archived_at: SystemTime::now(), source } } #[must_use] pub fn tab(&self) -> &BrowserTab { &self.tab } #[must_use] pub fn archived_at(&self) -> SystemTime { self.archived_at } #[must_use] pub fn source(&self) -> &ArchiveSource { &self.source } #[must_use] pub fn into_tab(self) -> BrowserTab { let mut tab = self.tab; tab.mark_ready(); tab } }