Skip to content
This repository was archived by the owner on May 30, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/jobs/scheduled/discourse_automation_tracker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ def send_pending_pm(pending_pm)
DiscourseAutomation::Scriptable::Utils.send_pm(
pending_pm.attributes.slice("target_usernames", "title", "raw"),
sender: pending_pm.sender,
prefers_encrypt: pending_pm.prefers_encrypt,
)

pending_pm.destroy!
Expand Down
8 changes: 5 additions & 3 deletions app/lib/discourse_automation/scriptable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -194,21 +194,23 @@ def self.send_pm(
sender: Discourse.system_user.username,
delay: nil,
automation_id: nil,
encrypt: true
prefers_encrypt: true
)
pm = pm.symbolize_keys
prefers_encrypt = prefers_encrypt && !!defined?(EncryptedPostCreator)

if delay && automation_id
if delay && delay.to_i > 0 && automation_id
pm[:execute_at] = delay.to_i.minutes.from_now
pm[:sender] = sender
pm[:automation_id] = automation_id
pm[:prefers_encrypt] = prefers_encrypt
DiscourseAutomation::PendingPm.create!(pm)
else
if sender = User.find_by(username: sender)
post_created = false
pm = pm.merge(archetype: Archetype.private_message)

if encrypt && defined?(EncryptedPostCreator)
if prefers_encrypt
pm[:target_usernames] = (pm[:target_usernames] || []).join(",")
post_created = EncryptedPostCreator.new(sender, pm).create
end
Expand Down
2 changes: 1 addition & 1 deletion app/lib/discourse_automation/scripts/gift_exchange.rb
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
utils.send_pm(
{ target_usernames: Array(gifter), title: title, raw: raw },
delay: giftee_assignment_message["delay"],
encrypt: giftee_assignment_message["encrypt"],
prefers_encrypt: giftee_assignment_message["prefers_encrypt"],
automation_id: automation.id,
)
end
Expand Down
2 changes: 1 addition & 1 deletion app/lib/discourse_automation/scripts/send_pms.rb
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
sender: sender_username,
automation_id: automation.id,
delay: sendable["delay"],
encrypt: sendable["encrypt"],
prefers_encrypt: sendable["prefers_encrypt"],
)
end
end
Expand Down
2 changes: 1 addition & 1 deletion app/models/discourse_automation/field.rb
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ def metadata_schema
"delay" => {
"type" => "integer",
},
"encrypt" => {
"prefers_encrypt" => {
"type" => "boolean",
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default class PmsField extends BaseField {
title: "",
raw: "",
delay: 0,
encrypt: true,
prefers_encrypt: true,
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,14 @@

<div class="control-group">
<label class="control-label">
{{i18n "discourse_automation.fields.pms.encrypt.label"}}
{{i18n "discourse_automation.fields.pms.prefers_encrypt.label"}}
</label>

<div class="controls">
{{input
type="checkbox"
checked=pm.encrypt
click=(action (mut pm.encrypt) value="target.checked")
checked=pm.prefers_encrypt
click=(action (mut pm.prefers_encrypt) value="target.checked")
disabled=field.isDisabled
}}
</div>
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.ar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ ar:
label: النص
delay:
label: التأخير (بالدقائق)
encrypt:
prefers_encrypt:
label: يشفِّر الرسائل الشخصية إذا كانت متاحة
group:
label: المجموعة
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ de:
label: Body
delay:
label: Verzögerung (Minuten)
encrypt:
prefers_encrypt:
label: Verschlüsselt PN, falls verfügbar
group:
label: Gruppe
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ en:
label: Body
delay:
label: Delay (minutes)
encrypt:
prefers_encrypt:
label: Encrypts PM if available
group:
label: Group
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ es:
label: Cuerpo
delay:
label: Retardo (en minutos)
encrypt:
prefers_encrypt:
label: Cifrar el mensaje cuando sea posible
group:
label: Grupo
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.fi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ fi:
label: Teksti
delay:
label: Viive (minuutteina)
encrypt:
prefers_encrypt:
label: Salaa yksityisviestin, jos käytettävissä
group:
label: Ryhmä
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ fr:
label: Corps
delay:
label: Délai (minutes)
encrypt:
prefers_encrypt:
label: Chiffrer le MP si disponible
group:
label: Groupe
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.hu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ hu:
label: Törzs
delay:
label: Késleltetés (perc)
encrypt:
prefers_encrypt:
label: PÜ titkosítása, ha elérhető
group:
label: Csoport
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.it.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ it:
label: Corpo
delay:
label: Ritardo (minuti)
encrypt:
prefers_encrypt:
label: Applica crittografia ai MP se disponibile
group:
label: Gruppo
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.ja.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ ja:
label: 本文
delay:
label: 遅延(分)
encrypt:
prefers_encrypt:
label: 可能な場合は PM を暗号化する
group:
label: グループ
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.nl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ nl:
label: Tekst
delay:
label: Vertraging (minuten)
encrypt:
prefers_encrypt:
label: Versleutelt PB indien beschikbaar
group:
label: Groep
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.pt_BR.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ pt_BR:
label: Corpo
delay:
label: Atraso (minutos)
encrypt:
prefers_encrypt:
label: Criptografa PM, se disponível
group:
label: Grupo
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.ru.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ ru:
label: Тело сообщения
delay:
label: Задержка (в минутах)
encrypt:
prefers_encrypt:
label: Шифрует ЛС, если это возможно
group:
label: Группа
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.sv.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ sv:
label: Kropp
delay:
label: Fördröjning (minuter)
encrypt:
prefers_encrypt:
label: Krypterar PM om tillgängligt
group:
label: Grupp
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.tr_TR.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ tr_TR:
label: Gövde
delay:
label: Gecikme (dakika)
encrypt:
prefers_encrypt:
label: Mümkünse özel mesajı şifreler
group:
label: Grup
Expand Down
2 changes: 1 addition & 1 deletion config/locales/client.zh_CN.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ zh_CN:
label: 正文
delay:
label: 延迟(分钟)
encrypt:
prefers_encrypt:
label: 加密 PM(如果可用)
group:
label: 群组
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def up
title: pm["title"],
raw: pm["body"],
delay: pm["delay"] || 0,
encrypt: pm["encrypt"] || true,
prefers_encrypt: pm["encrypt"] || true,
},
],
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# frozen_string_literal: true

class AddPrefersEncryptFieldToPendingPms < ActiveRecord::Migration[7.0]
def change
add_column :discourse_automation_pending_pms,
:prefers_encrypt,
:boolean,
null: false,
default: false
end
end
29 changes: 29 additions & 0 deletions spec/scripts/send_pms_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -87,4 +87,33 @@
}.to change { Post.count }.by(1)
end
end

context "when delayed" do
fab!(:user_1) { Fabricate(:user) }

before { automation.update!(trigger: DiscourseAutomation::Triggerable::RECURRING) }

it "correctly stores encrypt preference" do
automation.upsert_field!(
"sendable_pms",
"pms",
{
value: [
{
title: "A message from %%SENDER_USERNAME%%",
raw: "This is a message sent to @%%RECEIVER_USERNAME%%",
delay: 1,
prefers_encrypt: false,
},
],
},
target: "script",
)
automation.upsert_field!("receiver", "user", { value: Discourse.system_user.username })

automation.trigger!

expect(DiscourseAutomation::PendingPm.last.prefers_encrypt).to eq(false)
end
end
end