| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- /* eslint-disable
- camelcase,
- max-len,
- no-undef,
- no-unused-vars,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS103: Rewrite code to no longer use __guard__
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- define(['../base', 'crypto-js/md5'], function(App, CryptoJS) {
- const oldKeys = [
- 'sl_abt_multi_currency_editor_eu-eu',
- 'sl_abt_multi_currency_eu-eu',
- 'sl_abt_multi_currency_editor_eu-usd',
- 'sl_abt_multi_currency_eu-usd',
- 'sl_abt_trial_len_14d',
- 'sl_abt_trial_len_7d',
- 'sl_abt_trial_len_30d',
- 'sl_utt',
- 'sl_utt_trial_len',
- 'sl_utt_multi_currency'
- ]
- App.factory('abTestManager', function($http, ipCookie) {
- let getABTestBucket, processTestWithStep
- _.each(oldKeys, oldKey => ipCookie.remove(oldKey))
- const _buildCookieKey = function(testName, bucket) {
- const key = `sl_abt_${testName}_${bucket}`
- return key
- }
- const _getTestCookie = function(testName, bucket) {
- const cookieKey = _buildCookieKey(testName, bucket)
- const cookie = ipCookie(cookieKey)
- return cookie
- }
- const _persistCookieStep = function(testName, bucket, newStep) {
- const cookieKey = _buildCookieKey(testName, bucket)
- ipCookie(cookieKey, { step: newStep }, { expires: 100, path: '/' })
- return ga(
- 'send',
- 'event',
- 'ab_tests',
- `${testName}:${bucket}`,
- `step-${newStep}`
- )
- }
- const _checkIfStepIsNext = function(cookieStep, newStep) {
- if (cookieStep == null && newStep !== 0) {
- return false
- } else if (newStep === 0) {
- return true
- } else if (cookieStep + 1 === newStep) {
- return true
- } else {
- return false
- }
- }
- const _getUsersHash = function(testName) {
- const sl_user_test_token = `sl_utt_${testName}`
- let user_uuid = ipCookie(sl_user_test_token)
- if (user_uuid == null) {
- user_uuid = Math.random()
- ipCookie(sl_user_test_token, user_uuid, { expires: 365, path: '/' })
- }
- const hash = CryptoJS(`${user_uuid}:${testName}`)
- return hash
- }
- return {
- processTestWithStep: (processTestWithStep = function(
- testName,
- bucket,
- newStep
- ) {
- const currentCookieStep = __guard__(
- _getTestCookie(testName, bucket),
- x => x.step
- )
- if (_checkIfStepIsNext(currentCookieStep, newStep)) {
- return _persistCookieStep(testName, bucket, newStep)
- }
- }),
- getABTestBucket: (getABTestBucket = function(test_name, buckets) {
- const hash = _getUsersHash(test_name)
- const bucketIndex =
- parseInt(hash.toString().slice(0, 2), 16) %
- ((buckets != null ? buckets.length : undefined) || 2)
- return buckets[bucketIndex]
- })
- }
- })
- return App.controller('AbTestController', function($scope, abTestManager) {
- const testKeys = _.keys(window.ab)
- return _.each(window.ab, event =>
- abTestManager.processTestWithStep(
- event.testName,
- event.bucket,
- event.step
- )
- )
- })
- })
- function __guard__(value, transform) {
- return typeof value !== 'undefined' && value !== null
- ? transform(value)
- : undefined
- }
|