| @@ -127,8 +127,8 @@ class Project < ApplicationRecord | |||||
| has_many :has_pinned_users, through: :pinned_projects, source: :user | has_many :has_pinned_users, through: :pinned_projects, source: :user | ||||
| has_many :webhooks, class_name: "Gitea::Webhook", primary_key: :gpid, foreign_key: :repo_id | has_many :webhooks, class_name: "Gitea::Webhook", primary_key: :gpid, foreign_key: :repo_id | ||||
| after_save :check_project_members, :reset_cache_data | |||||
| before_save :set_invite_code | |||||
| after_save :check_project_members | |||||
| before_save :set_invite_code, :reset_cache_data, :reset_unmember_followed | |||||
| after_destroy :reset_cache_data | after_destroy :reset_cache_data | ||||
| scope :project_statics_select, -> {select(:id,:name, :is_public, :identifier, :status, :project_type, :user_id, :forked_count, :visits, :project_category_id, :project_language_id, :license_id, :ignore_id, :watchers_count, :created_on)} | scope :project_statics_select, -> {select(:id,:name, :is_public, :identifier, :status, :project_type, :user_id, :forked_count, :visits, :project_category_id, :project_language_id, :license_id, :ignore_id, :watchers_count, :created_on)} | ||||
| scope :no_anomory_projects, -> {where("projects.user_id is not null and projects.user_id != ?", 2)} | scope :no_anomory_projects, -> {where("projects.user_id is not null and projects.user_id != ?", 2)} | ||||
| @@ -158,6 +158,12 @@ class Project < ApplicationRecord | |||||
| self.reset_user_cache_async_job(self.owner) | self.reset_user_cache_async_job(self.owner) | ||||
| end | end | ||||
| def reset_unmember_followed | |||||
| if changes[:is_public].present? && changes[:is_public] == [true, false] | |||||
| self.watchers.where.not(user_id: self.all_collaborators).destroy_all | |||||
| end | |||||
| end | |||||
| def set_invite_code | def set_invite_code | ||||
| if self.invite_code.nil? | if self.invite_code.nil? | ||||
| self.invite_code= self.generate_dcode('invite_code', 6) | self.invite_code= self.generate_dcode('invite_code', 6) | ||||