summaryrefslogtreecommitdiff
path: root/src/app.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app.rs')
-rw-r--r--src/app.rs71
1 files changed, 53 insertions, 18 deletions
diff --git a/src/app.rs b/src/app.rs
index ad19bc0..098ae9f 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -10,30 +10,34 @@ use crate::{
invite::app::Invites,
login::app::Logins,
message::app::Messages,
+ push::app::Push,
setup::app::Setup,
token::{self, app::Tokens},
+ vapid::app::Vapid,
};
#[derive(Clone)]
-pub struct App {
+pub struct App<P> {
db: SqlitePool,
+ webpush: P,
events: event::Broadcaster,
token_events: token::Broadcaster,
}
-impl App {
- pub fn from(db: SqlitePool) -> Self {
+impl<P> App<P> {
+ pub fn from(db: SqlitePool, webpush: P) -> Self {
let events = event::Broadcaster::default();
let token_events = token::Broadcaster::default();
Self {
db,
+ webpush,
events,
token_events,
}
}
}
-impl App {
+impl<P> App<P> {
pub fn boot(&self) -> Boot {
Boot::new(self.db.clone())
}
@@ -58,6 +62,13 @@ impl App {
Messages::new(self.db.clone(), self.events.clone())
}
+ pub fn push(&self) -> Push<P>
+ where
+ P: Clone,
+ {
+ Push::new(self.db.clone(), self.webpush.clone())
+ }
+
pub fn setup(&self) -> Setup {
Setup::new(self.db.clone(), self.events.clone())
}
@@ -70,46 +81,70 @@ impl App {
pub fn users(&self) -> Users {
Users::new(self.db.clone(), self.events.clone())
}
+
+ pub fn vapid(&self) -> Vapid {
+ Vapid::new(self.db.clone(), self.events.clone())
+ }
+
+ #[cfg(test)]
+ pub fn webpush(&self) -> &P {
+ &self.webpush
+ }
}
-impl FromRef<App> for Boot {
- fn from_ref(app: &App) -> Self {
+impl<P> FromRef<App<P>> for Boot {
+ fn from_ref(app: &App<P>) -> Self {
app.boot()
}
}
-impl FromRef<App> for Conversations {
- fn from_ref(app: &App) -> Self {
+impl<P> FromRef<App<P>> for Conversations {
+ fn from_ref(app: &App<P>) -> Self {
app.conversations()
}
}
-impl FromRef<App> for Invites {
- fn from_ref(app: &App) -> Self {
+impl<P> FromRef<App<P>> for Invites {
+ fn from_ref(app: &App<P>) -> Self {
app.invites()
}
}
-impl FromRef<App> for Logins {
- fn from_ref(app: &App) -> Self {
+impl<P> FromRef<App<P>> for Logins {
+ fn from_ref(app: &App<P>) -> Self {
app.logins()
}
}
-impl FromRef<App> for Messages {
- fn from_ref(app: &App) -> Self {
+impl<P> FromRef<App<P>> for Messages {
+ fn from_ref(app: &App<P>) -> Self {
app.messages()
}
}
-impl FromRef<App> for Setup {
- fn from_ref(app: &App) -> Self {
+impl<P> FromRef<App<P>> for Push<P>
+where
+ P: Clone,
+{
+ fn from_ref(app: &App<P>) -> Self {
+ app.push()
+ }
+}
+
+impl<P> FromRef<App<P>> for Setup {
+ fn from_ref(app: &App<P>) -> Self {
app.setup()
}
}
-impl FromRef<App> for Tokens {
- fn from_ref(app: &App) -> Self {
+impl<P> FromRef<App<P>> for Tokens {
+ fn from_ref(app: &App<P>) -> Self {
app.tokens()
}
}
+
+impl<P> FromRef<App<P>> for Vapid {
+ fn from_ref(app: &App<P>) -> Self {
+ app.vapid()
+ }
+}