From 40717fbc0c31d407fb0e79492e13ab41a3e4b734 Mon Sep 17 00:00:00 2001 From: Max Wofford Date: Mon, 10 Mar 2025 14:34:28 -0400 Subject: [PATCH] Avatar supports non-slack users --- app/models/user.rb | 8 +++++++- ...5010_rename_avatar_url_to_slack_avatar_url_on_users.rb | 5 +++++ db/schema.rb | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20250310165010_rename_avatar_url_to_slack_avatar_url_on_users.rb diff --git a/app/models/user.rb b/app/models/user.rb index 55bb41d..307d16e 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -147,7 +147,7 @@ class User < ApplicationRecord user = find_or_initialize_by(slack_uid: data.dig("authed_user", "id")) user.username = user_data.dig("user", "profile", "username") user.username ||= user_data.dig("user", "profile", "display_name_normalized") - user.avatar_url = user_data.dig("user", "profile", "image_192") || user_data.dig("user", "profile", "image_72") + user.slack_avatar_url = user_data.dig("user", "profile", "image_192") || user_data.dig("user", "profile", "image_72") # Store the OAuth data user.slack_access_token = data["authed_user"]["access_token"] user.slack_scopes = data["authed_user"]["scope"]&.split(/,\s*/) @@ -165,6 +165,12 @@ class User < ApplicationRecord nil end + def avatar_url + return self.slack_avatar_url if self.slack_avatar_url.present? + return "https://initials.me/#{self.username}=50" if self.username.present? + "https://initials.me/#{self.email_addresses.first.email[0..1]}=50" if self.email_addresses.any? + end + def project_names heartbeats.select(:project).distinct.pluck(:project) end diff --git a/db/migrate/20250310165010_rename_avatar_url_to_slack_avatar_url_on_users.rb b/db/migrate/20250310165010_rename_avatar_url_to_slack_avatar_url_on_users.rb new file mode 100644 index 0000000..c84f4cf --- /dev/null +++ b/db/migrate/20250310165010_rename_avatar_url_to_slack_avatar_url_on_users.rb @@ -0,0 +1,5 @@ +class RenameAvatarUrlToSlackAvatarUrlOnUsers < ActiveRecord::Migration[8.0] + def change + rename_column :users, :avatar_url, :slack_avatar_url + end +end diff --git a/db/schema.rb b/db/schema.rb index 61525fe..8ce3d33 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_03_07_225347) do +ActiveRecord::Schema[8.0].define(version: 2025_03_10_165010) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -224,7 +224,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_03_07_225347) do t.datetime "created_at", null: false t.datetime "updated_at", null: false t.string "username" - t.string "avatar_url" + t.string "slack_avatar_url" t.boolean "is_admin", default: false, null: false t.boolean "uses_slack_status", default: false, null: false t.string "slack_scopes", default: [], array: true