Add web push notifications for new inbox items
This commit is contained in:
+25
-2
@@ -161,6 +161,24 @@ DROP TABLE turn_queue;
|
||||
ALTER TABLE turn_queue_next RENAME TO turn_queue;
|
||||
`}, {"add-task-merge-title", `
|
||||
ALTER TABLE tasks ADD COLUMN merge_title TEXT NOT NULL DEFAULT '';
|
||||
`}, {"add-web-push", `
|
||||
ALTER TABLE users ADD COLUMN notification_prefs TEXT NOT NULL
|
||||
DEFAULT '{"blocking_questions":true,"questions":false,"reports":false,"errors":false,"rate_limits":false}';
|
||||
|
||||
CREATE TABLE vapid_keys (
|
||||
id INTEGER PRIMARY KEY CHECK (id = 1),
|
||||
public_key TEXT NOT NULL,
|
||||
private_key TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE push_subscriptions (
|
||||
endpoint TEXT PRIMARY KEY,
|
||||
user_login TEXT NOT NULL REFERENCES users(login),
|
||||
p256dh TEXT NOT NULL,
|
||||
auth TEXT NOT NULL,
|
||||
subscriber TEXT NOT NULL,
|
||||
created_at TEXT NOT NULL
|
||||
);
|
||||
`}}
|
||||
|
||||
type Store struct {
|
||||
@@ -314,11 +332,16 @@ func (s *Store) EnsureUser(ctx context.Context, login, displayName string) (api.
|
||||
|
||||
func (s *Store) GetUser(ctx context.Context, login string) (api.User, error) {
|
||||
u := api.User{}
|
||||
err := s.db.QueryRowContext(ctx, `SELECT login, display_name, git_name, git_email FROM users WHERE login = ?`, login).
|
||||
Scan(&u.Login, &u.DisplayName, &u.GitName, &u.GitEmail)
|
||||
prefs := ""
|
||||
err := s.db.QueryRowContext(ctx, `SELECT login, display_name, git_name, git_email, notification_prefs FROM users WHERE login = ?`, login).
|
||||
Scan(&u.Login, &u.DisplayName, &u.GitName, &u.GitEmail, &prefs)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
return u, ErrNotFound
|
||||
}
|
||||
if err != nil {
|
||||
return u, err
|
||||
}
|
||||
err = json.Unmarshal([]byte(prefs), &u.NotificationPrefs)
|
||||
return u, err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user