32 lines
804 B
Ruby
32 lines
804 B
Ruby
module EjabberdManager
|
|
class SetDefaultBookmarks < EjabberdManagerService
|
|
def initialize(user:)
|
|
@user = user
|
|
end
|
|
|
|
def call
|
|
return unless Setting.xmpp_default_rooms.any?
|
|
|
|
private_set @user, storage_content
|
|
end
|
|
|
|
private
|
|
|
|
def storage_content
|
|
bookmarks = ""
|
|
Setting.xmpp_default_rooms.each do |r|
|
|
bookmarks << conference_element(
|
|
jid: r[/<(.+)>/, 1], name: r[/^(.+)\s/, 1], nick: @user.cn,
|
|
autojoin: Setting.xmpp_autojoin_default_rooms
|
|
)
|
|
end
|
|
|
|
"<storage xmlns='storage:bookmarks'>#{bookmarks}</storage>"
|
|
end
|
|
|
|
def conference_element(jid:, name:, autojoin: false, nick:)
|
|
"<conference jid='#{jid}' name='#{name}' autojoin='#{autojoin.to_s}'><nick>#{nick}</nick></conference>"
|
|
end
|
|
end
|
|
end
|