Files
docuseal/lib/submission_events.rb
T

40 lines
1.2 KiB
Ruby
Raw Normal View History

2023-09-10 12:55:41 +03:00
# frozen_string_literal: true
module SubmissionEvents
TRACKING_PARAM_LENGTH = 6
2023-09-10 19:25:57 +03:00
EVENT_NAMES = {
send_email: 'Email sent',
2023-09-17 20:38:09 +03:00
send_reminder_email: 'Reminder email sent',
2023-09-10 19:25:57 +03:00
send_sms: 'SMS sent',
2023-12-05 19:42:47 +02:00
send_2fa_sms: 'Verification SMS sent',
2023-09-10 19:25:57 +03:00
open_email: 'Email opened',
click_email: 'Email link clicked',
click_sms: 'SMS link clicked',
2023-09-27 23:28:33 +03:00
phone_verified: 'Phone verified',
2023-09-10 19:25:57 +03:00
start_form: 'Submission started',
view_form: 'Form viewed',
2024-09-12 17:31:37 +03:00
invite_party: 'Invited',
2024-02-10 19:38:03 +02:00
complete_form: 'Submission completed',
api_complete_form: 'Submission completed via API'
2023-09-10 19:25:57 +03:00
}.freeze
2023-09-10 12:55:41 +03:00
module_function
def build_tracking_param(submitter, event_type = 'click_email')
Base64.urlsafe_encode64(
2024-06-11 16:59:15 +03:00
Digest::SHA1.digest([submitter.slug, event_type, Rails.application.secret_key_base].join(':'))
2023-09-10 12:55:41 +03:00
).first(TRACKING_PARAM_LENGTH)
end
2024-04-21 17:00:45 +03:00
def create_with_tracking_data(submitter, event_type, request, data = {})
2023-09-10 12:55:41 +03:00
SubmissionEvent.create!(submitter:, event_type:, data: {
ip: request.remote_ip,
ua: request.user_agent,
sid: request.session.id.to_s,
2024-04-21 17:00:45 +03:00
uid: request.env['warden'].user(:user)&.id,
**data
2023-09-10 12:55:41 +03:00
}.compact_blank)
end
end