[Feature request] Google tag manager GTM

Hi,
Thank you for the plugin, great work.
Can you please integrate the the google tag manager to your plugin, firebase works with GTM.
Thank you.

Currently it works with Android only.

Not working , I followed the rules and its not working , have you done something else than copying the  in the config file?

I answered someone on Stackoverflow  regarding this issue. Check it out, if you should still need some help just let me know.
It would be also interesting how far you are now?! You copied the json file into your folder then what? Did you check your logs if your Container did load? In which directory did you put it in?
We managed to get iOS running too 🏆

Hey, i saw your post, and i added the resource-file to copy the container in "resources/android/containers/GTM-xxxxx.json" and thats working just fine. I also added the framework tag in plugin.xml for using tag manager but its not working.
Im debugging this with Android Studio, but the log I'm getting is:
"I/FA: Tag Manager is not found and thus will not be used"
What i don't get is where do you tell the compiler to see your container and execute it? The firebase SDK does that by itself?
Im using ionic 3 , i dont know if this can be a problem.
Congrats for getting it running on iOS!

He does it for himself. I did nothing else then putting the file into my Project and adapting config.xml.
Hmm, could it be that you just added the src but not your target?
Try this, add your GTM.json to the root Project, where your package.json file is.
Then tell cordova where it is with src and then (this is very important) set the target to the given path. Change only the Name of the GTM.json file in the target.

It should look like this. Firebase SDK looks for it in the assets/container folder.
Then try cordova build android and check if the GTM-XXXX.json file is in  Platform/Android/assets/containers/GTM-XXXX.json
Try again to debug and see if something happens

I also did that but its not working, check out my resource-file:
<resource-file src="resources/android/containers/GTM-XXXXXXX.json" target="assets/containers/GTM-XXXXXXX.json" />
Which version of cordova and ionic are you using?
So, you just change 2 files the plugin.xml and the config.xml?

`cli packages: (/usr/local/lib/node_modules)
@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0

global packages:
cordova (Cordova CLI) : 7.1.0

local packages:
@ionic/app-scripts : not installed
Cordova Platforms  : ios 4.5.4
Ionic Framework    : not installed

System:
ios-deploy : 1.9.2
Node       : v6.11.1
npm        : 5.1.0
OS         : macOS High Sierra
Xcode      : Xcode 9.1 Build version 9B55

Environment Variables:
ANDROID_HOME : not set

Misc:
backend : pro`

I have the latest cordova-plugin-firebase installed. No I did not touch the plugin.xml.
Putting it in the correct container should do everything.
We adapted the security content policy though.
<meta http-equiv="Content-Security-Policy" content="default-src gap://ready file://* *; img-src https://*.XXX.com http://*.XXX.com 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://localhost:35729 https://www.googletagmanager.com https://www.google-analytics.com">
Did you try a clean installation?

Hey @enesyalcin what you had to do to get it working on iOS?

I had a lot of help from a colleague which knows how cordova and cocoa pods work in detail. So he helped me out to get my GTM.json file into the correct folder for iOS to work.
@juliosampaio check out my cordova-plugin, if you have your android running, this should work also with your iOS once set up. PS: Sometimes you have to install the pod manually after adding it to the project.
I have to admit that I had way more issues configuring GTM then implementing the whole thing, there is no way we can see if it really works or not. Best chance is to check the devices logs with xcode and logcat. And always check Google Analytics if you receive anything :)
My setup looks like that: Firebase as Datalayer -> GTM -> Google Analytics
I attached my test GTM Container for Android which is identical to  the iOS version. You should change the GA otherwise I receive the tracking on my test GA-Account :)
In my code I log the events for the current screen with firebase. That is all:
  IonDidEnter(){
    // Track in Firebase
    this.firebase.setScreenName(this.className);
    // Track in GA via GTM
    this.firebase.logEvent('openScreen', {
     screenName: this.className,
   });
  }

If I find time over christmas break I will create a demo repo.

closing as resolved

I think the documentation is poor. If this plugin can allow GTM, please add the correct FAQ related to that on the wiki.

I agree with @stvmachine, after reading the wiki and the comments on this issue I'm still not sure if this plugin supports GTM for both Android and iOS or not.
@soumak77  From what I can see on the wiki, this plugin does not support GTM for iOS... is that right?

Any news on GTM for iOS ?
I tried as described in the doc :
<resource-file target="GTM-XXXXXX.json" />
With NO LUCK !

@Okyne are you using phonegap build site to build app??

I am using Ionic with Cordova.
This is my Ionic info :
Ionic:
ionic (Ionic CLI)  : 4.0.1 (/usr/local/lib/node_modules/ionic)
 Ionic Framework    : ionic-angular 3.5.3
 @ionic/app-scripts : 2.1.4

Cordova:
   cordova (Cordova CLI) : 8.0.0
   Cordova Platforms     : ios 4.5.5

System:
ios-deploy : 2.0.0
ios-sim    : 5.0.8
NodeJS     : v6.12.0 (/usr/local/bin/node)
npm        : 3.10.10
OS         : macOS
Xcode      : Xcode 10.1 Build version 10B61

Environment:
ANDROID_HOME : not set

Thanks for your help

@Okyne  - are you using xcode for generating ipa?

@edvenkat Thx.
Yes I use Xcode and I already tried adding a container folder with the .json in it. I added the folder to the referenced folders in Xcode.
But no more luck.

Can you share you GTM-xxx.json file please

{
"fingerprint":"NQ$0",
"resource": {
"version":"5",
"macros":[{
"function":"__e",
"instance_name":"NAT - Event Name"
},{
"function":"__cid",
"instance_name":"NAT - Container ID"
},{
"function":"__ctv",
"instance_name":"NAT - Container Version"
},{
"function":"__gas",
"instance_name":"00 - Paramètres GA",
"vtp_collectAdid":true,
"vtp_dimension":["list",["map","index","16","dimension",["template",["macro",1],"|",["macro",2]]]],
"vtp_trackingId":"UA-XXXXXXX",
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseEcommerce":false
},{
"function":"__md",
"instance_name":"PAR - CompleteFeedAddAfla",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"CompleteFeedAddAfla"
},{
"function":"__md",
"instance_name":"PAR - CompleteFeedAddOchra",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"CompleteFeedAddOchra"
},{
"function":"__md",
"instance_name":"PAR - CompleteFeedAddZea",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"CompleteFeedAddZea"
},{
"function":"__md",
"instance_name":"PAR - CompleteFeedAddFumo",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"CompleteFeedAddFumo"
},{
"function":"__md",
"instance_name":"PAR - CompleteFeedAddDONtick",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"CompleteFeedAddDONtick"
},{
"function":"__md",
"instance_name":"PAR - CompleteFeedAddDONvalue",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"CompleteFeedAddDONvalue"
},{
"function":"__md",
"instance_name":"PAR - CompleteFeedAddT2",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"CompleteFeedAddT2"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddName",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddName"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddAfla",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddAfla"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddOchra",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddOchra"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddZea",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddZea"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddFumo",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddFumo"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddDONtick",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddDONtick"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddDONvalue",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddDONvalue"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddT2",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddT2"
},{
"function":"__md",
"instance_name":"PAR - RawMaterialsAddPercent",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"RawMaterialsAddPercent"
},{
"function":"__md",
"instance_name":"PAR - LanguageChangeName",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"LanguageChangeName"
},{
"function":"__md",
"instance_name":"PAR - UserRequestName",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"UserRequestName"
},{
"function":"__md",
"instance_name":"PAR - FormErrorKeys",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"FormErrorKeys"
},{
"function":"__md",
"instance_name":"PAR - SelectAnimalsSpecies",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"SelectAnimalsSpecies"
},{
"function":"__md",
"instance_name":"PAR - SelectAnimalsSubspecies",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"SelectAnimalsSubspecies"
},{
"function":"__md",
"instance_name":"PAR - SelectT5Product",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"SelectT5Product"
},{
"function":"__md",
"instance_name":"PAR - ScreenAnimalsSpecies",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"ScreenAnimalsSpecies"
},{
"function":"__md",
"instance_name":"PAR - ScreenAnimalsSubspecies",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"ScreenAnimalsSubspecies"
},{
"function":"__md",
"instance_name":"PAR - ScreenStaticName",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"ScreenStaticName"
},{
"function":"__md",
"instance_name":"PAR - ScreenTooltipName",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"ScreenTooltipName"
},{
"function":"__md",
"instance_name":"PAR - ScreenRecommendationProductDose",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"ScreenRecommendationProductDose"
},{
"function":"__md",
"instance_name":"PAR - ScreenRecommendationProductRiskLevel",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"ScreenRecommendationProductRiskLevel"
},{
"function":"__md",
"instance_name":"PAR - ScreenRecommendationProductSuggested",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"ScreenRecommendationProductSuggested"
},{
"function":"__md",
"instance_name":"PAR - UserCreationCountry",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"UserCreationCountry"
},{
"function":"__md",
"instance_name":"PAR - UserCreationType",
"vtp_setDefaultValue":false,
"vtp_eventType":"CUSTOM",
"vtp_key":"UserCreationType"
}],
"tags":[{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Customer",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"Account creation",
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":1
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Product",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"Addition of complete feed",
"vtp_dimension":["list",["map","index","4","dimension",["macro",4]],["map","index","5","dimension",["macro",5]],["map","index","6","dimension",["macro",6]],["map","index","7","dimension",["macro",7]],["map","index","8","dimension",["macro",8]],["map","index","9","dimension",["macro",9]],["map","index","10","dimension",["macro",10]]],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":2
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Product",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"Addition of raw material",
"vtp_eventLabel":["macro",11],
"vtp_dimension":["list",["map","index","3","dimension",["macro",11]],["map","index","4","dimension",["macro",12]],["map","index","5","dimension",["macro",13]],["map","index","6","dimension",["macro",14]],["map","index","7","dimension",["macro",15]],["map","index","8","dimension",["macro",16]],["map","index","9","dimension",["macro",17]],["map","index","10","dimension",["macro",18]],["map","index","15","dimension",["macro",19]]],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":3
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Browsing",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"App language changes",
"vtp_eventLabel":["macro",20],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":6
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Browsing",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"Call To Action Click",
"vtp_eventLabel":["macro",21],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":7
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Browsing",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"Error submitting form",
"vtp_eventLabel":["macro",22],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":8
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Browsing",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"Forgotten password",
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":9
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":true,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Customer",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"Login",
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":10
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Product",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"Species selection",
"vtp_eventLabel":["template",["macro",23],"|",["macro",24]],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":11
},{
"function":"__ua",
"once_per_event":true,
"vtp_nonInteraction":false,
"vtp_overrideGaSettings":true,
"vtp_eventCategory":"Product",
"vtp_trackType":"TRACK_EVENT",
"vtp_gaSettings":["macro",3],
"vtp_sendFirebaseCampaignData":true,
"vtp_eventAction":"T5x Product selection",
"vtp_eventLabel":["macro",25],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_trackTypeIsEvent":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":12
},{
"function":"__ua",
"once_per_event":true,
"vtp_overrideGaSettings":true,
"vtp_fieldsToSet":["list",["map","fieldName","screenName","value",["template",["macro",26],"|",["macro",27]]]],
"vtp_trackType":"TRACK_SCREENVIEW",
"vtp_gaSettings":["macro",3],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":13
},{
"function":"__ua",
"once_per_event":true,
"vtp_overrideGaSettings":true,
"vtp_fieldsToSet":["list",["map","fieldName","screenName","value",["macro",28]]],
"vtp_trackType":"TRACK_SCREENVIEW",
"vtp_gaSettings":["macro",3],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":14
},{
"function":"__ua",
"once_per_event":true,
"vtp_overrideGaSettings":true,
"vtp_fieldsToSet":["list",["map","fieldName","screenName","value",["template","Tooltip|",["macro",29]]]],
"vtp_trackType":"TRACK_SCREENVIEW",
"vtp_gaSettings":["macro",3],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":15
},{
"function":"__ua",
"once_per_event":true,
"vtp_overrideGaSettings":true,
"vtp_fieldsToSet":["list",["map","fieldName","screenName","value","symptoms"]],
"vtp_trackType":"TRACK_SCREENVIEW",
"vtp_gaSettings":["macro",3],
"vtp_enableRecaptchaOption":false,
"vtp_enableUaRlsa":false,
"vtp_enableUseInternalVersion":false,
"vtp_enableFirebaseCampaignData":true,
"vtp_enableFirebaseEcommerce":true,
"tag_id":16
}],
"predicates":[{
"function":"_eq",
"arg0":["macro",0],
"arg1":"UserCreation"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"CompleteFeedAdd"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"RawMaterialsAdd"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"LanguageChange"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"UserRequest"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"FormError"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"UserPasswordReset"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"UserLogin"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"SelectAnimals"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"SelectT5"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"ScreenAnimals"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"ScreenStatic"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"ScreenTooltip"
},{
"function":"_eq",
"arg0":["macro",0],
"arg1":"ScreenSympt"
}],
"rules":[
[["if",0],["add",0]],
[["if",1],["add",1]],
[["if",2],["add",2]],
[["if",3],["add",3]],
[["if",4],["add",4]],
[["if",5],["add",5]],
[["if",6],["add",6]],
[["if",7],["add",7]],
[["if",8],["add",8]],
[["if",9],["add",9]],
[["if",10],["add",10]],
[["if",11],["add",11]],
[["if",12],["add",12]],
[["if",13],["add",13]]]
},
"runtime":
[
[50,"__ctv_main",[46],[36,[2,[17,[15,"gtmUtils"],"mobile"],"containerVersion",[7]]]],[50,"__ctv",[46,"data"],[36,["__ctv_main",[15,"data"]]]],
[50,"__e_main",[46],[41,"a","b"],[3,"a",[2,[17,[15,"gtmUtils"],"mobile"],"event",[7]]],[22,[1,[1,[15,"a"],[18,[17,[15,"a"],"length"],0]],[12,[16,[15,"a"],0],"_"]],[46,[3,"b",[8,"_f","first_open","_v","first_visit","_iap","in_app_purchase","_e","user_engagement","_s","session_start","_au","app_update","_ui","app_remove","_ou","os_update","_cd","app_clear_data","_ae","app_exception","_nf","notification_foreground","_nr","notification_receive","_no","notification_open","_nd","notification_dismiss","_cmp","firebase_campaign","_vs","screen_view","_ar","ad_reward"]],[3,"a",[30,[16,[15,"b"],[15,"a"]],[15,"a"]]]]],[36,[15,"a"]]],[50,"__e",[46,"data"],[36,["__e_main",[15,"data"]]]],
[50,"__ua_main",[46,"a"],[41,"b","c","d","e","f"],[43,[15,"a"],"fieldsToSet",["__ua_convertFieldsToSet",[17,[15,"a"],"fieldsToSet"]]],["__ua_convertIndexedField",[17,[15,"a"],"fieldsToSet"],[17,[15,"a"],"dimension"],"\u0026cd","index","dimension"],["__ua_convertIndexedField",[17,[15,"a"],"fieldsToSet"],[17,[15,"a"],"metric"],"\u0026cm","index","metric"],["__ua_convertIndexedField",[17,[15,"a"],"fieldsToSet"],[17,[15,"a"],"contentGroup"],"\u0026cg","index","group"],[22,[17,[15,"a"],"gaSettings"],[46,[3,"b",[17,[15,"a"],"gaSettings"]],[43,[15,"b"],"fieldsToSet",["__ua_convertFieldsToSet",[17,[15,"b"],"fieldsToSet"]]],["__ua_convertIndexedField",[17,[15,"b"],"fieldsToSet"],[17,[15,"b"],"dimension"],"\u0026cd","index","dimension"],["__ua_convertIndexedField",[17,[15,"b"],"fieldsToSet"],[17,[15,"b"],"metric"],"\u0026cm","index","metric"],["__ua_convertIndexedField",[17,[15,"b"],"fieldsToSet"],[17,[15,"b"],"contentGroup"],"\u0026cg","index","group"],[43,[15,"a"],"gaSettings",[45]],[3,"c",[2,[17,[15,"gtmUtils"],"common"],"copy",[7,[15,"b"],[44]]]],[3,"a",[2,[17,[15,"gtmUtils"],"common"],"copy",[7,[15,"a"],[15,"c"]]]]]],[3,"d",[17,[15,"a"],"fieldsToSet"]],[43,[15,"d"],"\u0026tid",[17,[15,"a"],"trackingId"]],[3,"e","screenview"],[3,"f",true],[38,[17,[15,"a"],"trackType"],[46,"TRACK_EVENT","TRACK_EXCEPTION","TRACK_SOCIAL","TRACK_TIMING","TRACK_TRANSACTION"],[46,[5,[46,[3,"e","event"],[22,[21,[17,[15,"a"],"eventCategory"],[44]],[46,[43,[15,"d"],"\u0026ec",[17,[15,"a"],"eventCategory"]]]],[22,[21,[17,[15,"a"],"eventAction"],[44]],[46,[43,[15,"d"],"\u0026ea",[17,[15,"a"],"eventAction"]]]],[22,[21,[17,[15,"a"],"eventLabel"],[44]],[46,[43,[15,"d"],"\u0026el",[17,[15,"a"],"eventLabel"]]]],[22,[21,[17,[15,"a"],"eventValue"],[44]],[46,[43,[15,"d"],"\u0026ev",[17,[15,"a"],"eventValue"]]]],[22,[21,[17,[15,"a"],"nonInteraction"],[44]],[46,[43,[15,"d"],"\u0026ni",[17,[15,"a"],"nonInteraction"]]]],[22,[17,[15,"a"],"enableFirebaseCampaignData"],[46,["__ua_convertCampaignParams",[15,"d"],[17,[15,"a"],"sendFirebaseCampaignData"]]]],[4]]],[5,[46,[3,"e","exception"],[22,[21,[17,[15,"a"],"exceptionDescription"],[44]],[46,[43,[15,"d"],"\u0026exd",[17,[15,"a"],"exceptionDescription"]]]],[22,[21,[17,[15,"a"],"exceptionFatal"],[44]],[46,[43,[15,"d"],"\u0026exf",[17,[15,"a"],"exceptionFatal"]]]],[4]]],[5,[46,[3,"e","social"],[22,[21,[17,[15,"a"],"socialNetwork"],[44]],[46,[43,[15,"d"],"\u0026sn",[17,[15,"a"],"socialNetwork"]]]],[22,[21,[17,[15,"a"],"socialAction"],[44]],[46,[43,[15,"d"],"\u0026sa",[17,[15,"a"],"socialAction"]]]],[22,[21,[17,[15,"a"],"socialActionTarget"],[44]],[46,[43,[15,"d"],"\u0026st",[17,[15,"a"],"socialActionTarget"]]]],[4]]],[5,[46,[3,"e","timing"],[22,[21,[17,[15,"a"],"timingVar"],[44]],[46,[43,[15,"d"],"\u0026utv",[17,[15,"a"],"timingVar"]]]],[22,[21,[17,[15,"a"],"timingCategory"],[44]],[46,[43,[15,"d"],"\u0026utc",[17,[15,"a"],"timingCategory"]]]],[22,[21,[17,[15,"a"],"timingValue"],[44]],[46,[43,[15,"d"],"\u0026utt",[17,[15,"a"],"timingValue"]]]],[22,[21,[17,[15,"a"],"timingLabel"],[44]],[46,[43,[15,"d"],"\u0026utl",[17,[15,"a"],"timingLabel"]]]],[4]]],[5,[46,[3,"e","transaction"],[3,"f",false],[4]]]]],[43,[15,"d"],"\u0026t",[15,"e"]],[22,[1,[17,[15,"a"],"enableEcommerce"],[12,[17,[15,"a"],"readDataFrom"],"FIREBASE_EVENT_DATA"]],[46,[22,[28,["__ua_sendEnhancedEcommerce",[15,"d"],[15,"a"]]],[46,[2,[17,[15,"gtmUtils"],"mobile"],"universalAnalytics",[7,[15,"d"],[15,"f"],[12,[15,"e"],"transaction"],[44],[44],false,false,[17,[15,"a"],"ecommerceVariableData"],[17,[15,"a"],"collectAdid"]]]]]],[46,[2,[17,[15,"gtmUtils"],"mobile"],"universalAnalytics",[7,[15,"d"],[15,"f"],[12,[15,"e"],"transaction"],[44],[44],[17,[15,"a"],"enableEcommerce"],false,[17,[15,"a"],"ecommerceVariableData"],[17,[15,"a"],"collectAdid"]]]]]],[50,"__ua_sendEnhancedEcommerce",[46,"a","b"],[41,"c","d","e","f","g","h","i","j","k","l","m","n","o","p","q"],[3,"c",[8,"select_content","click","view_item","detail","add_to_cart","add","remove_from_cart","remove","begin_checkout","checkout","checkout_progress","checkout","set_checkout_option","checkout_option","ecommerce_purchase","purchase","purchase_refund","refund"]],[3,"d",[8,"view_item_list","","view_search_results",""]],[3,"e",[8,"select_content",""]],[3,"f",[8,"view_item","","view_item_list","","view_search_results",""]],[3,"g",[8,"item_id","id","item_name","name","item_brand","brand","item_category","category","item_variant","variant","coupon","coupon","index","position","price","price","quantity","quantity"]],[3,"h",[8,"transaction_id","id","affiliation","affiliation","coupon","coupon","item_list","list","checkout_option","option","value","revenue","tax","tax","shipping","shipping","checkout_step","step"]],[3,"i",[8,"item_id","id","item_name","name","creative_name","creative","creative_slot","position"]],[3,"j",[2,[17,[15,"gtmUtils"],"mobile"],"event",[7]]],[3,"k",[30,[2,[17,[15,"gtmUtils"],"mobile"],"eventParameters",[7]],[8]]],[3,"l",[8]],[3,"m",false],[43,[15,"l"],"currencyCode",[16,[15,"k"],"currency"]],[22,[2,[15,"k"],"hasOwnProperty",[7,"promotions"]],[46,[22,[2,[15,"e"],"hasOwnProperty",[7,[15,"j"]]],[46,[43,[15,"a"],"\u0026t","event"],[43,[15,"a"],"\u0026ea","click"],[22,[2,[15,"k"],"hasOwnProperty",[7,"content_type"]],[46,[43,[15,"a"],"\u0026ec",[16,[15,"k"],"content_type"]]]],[22,[2,[15,"k"],"hasOwnProperty",[7,"item_id"]],[46,[43,[15,"a"],"\u0026el",[16,[15,"k"],"item_id"]]]],[43,[15,"l"],"promoClick",["__ua_convertPromotions",[15,"k"],[15,"i"]]],[3,"m",true]],[46,[22,[2,[15,"f"],"hasOwnProperty",[7,[15,"j"]]],[46,[43,[15,"l"],"promoView",["__ua_convertPromotions",[15,"k"],[15,"i"]]],[3,"m",true]]]]]],[46,[22,[2,[15,"c"],"hasOwnProperty",[7,[15,"j"]]],[46,[22,[12,[15,"j"],"set_checkout_option"],[46,[43,[15,"a"],"\u0026t","event"],[43,[15,"a"],"\u0026ea","Option"],[43,[15,"a"],"\u0026ec","Checkout"]]],[3,"n",[8]],[22,[2,[15,"k"],"hasOwnProperty",[7,"items"]],[46,[43,[15,"n"],"products",["__ua_convertProductList",[15,"k"],[15,"g"],false]]]],[3,"o",[8]],[3,"p",false],[47,"q",[15,"h"],[46,[22,[2,[15,"k"],"hasOwnProperty",[7,[15,"q"]]],[46,[43,[15,"o"],[16,[15,"h"],[15,"q"]],[16,[15,"k"],[15,"q"]]],[3,"p",true]]]]],[22,[15,"p"],[46,[43,[15,"n"],"actionField",[15,"o"]]]],[43,[15,"l"],[16,[15,"c"],[15,"j"]],[15,"n"]],[3,"m",true]],[46,[22,[2,[15,"d"],"hasOwnProperty",[7,[15,"j"]]],[46,[43,[15,"l"],"impressions",["__ua_convertProductList",[15,"k"],[15,"g"],true]],[3,"m",true]]]]]]],[22,[15,"m"],[46,[2,[17,[15,"gtmUtils"],"mobile"],"universalAnalytics",[7,[15,"a"],false,false,[44],[44],[17,[15,"b"],"enableEcommerce"],false,[15,"l"],[17,[15,"b"],"collectAdid"]]]]],[36,[15,"m"]]],[50,"__ua_convertScionFields",[46,"a","b"],[41,"c","d","e"],[22,[30,[12,[15,"b"],[44]],[12,[15,"b"],[45]]],[46,[36,[8]]]],[3,"c",[8]],[47,"d",[15,"b"],[46,[22,[30,[12,[2,[15,"d"],"indexOf",[7,"dimension"]],0],[12,[2,[15,"d"],"indexOf",[7,"metric"]],0]],[46,[43,[15,"c"],[15,"d"],[16,[15,"b"],[15,"d"]]]]]]],[47,"e",[15,"a"],[46,[22,[2,[15,"b"],"hasOwnProperty",[7,[15,"e"]]],[46,[43,[15,"c"],[16,[15,"a"],[15,"e"]],[16,[15,"b"],[15,"e"]]]]]]],[36,[15,"c"]]],[50,"__ua_convertPromotions",[46,"a","b"],[41,"c","d","e"],[3,"c",[7]],[3,"d",[16,[15,"a"],"promotions"]],[3,"e",0],[42,[23,[15,"e"],[17,[15,"d"],"length"]],[33,[15,"e"],[3,"e",[0,[15,"e"],1]]],false,[46,[2,[15,"c"],"push",[7,["__ua_convertScionFields",[15,"b"],[16,[15,"d"],[15,"e"]]]]]]],[36,[8,"promotions",[15,"c"]]]],[50,"__ua_convertProductList",[46,"a","b","c"],[41,"d","e","f","g"],[3,"d",[16,[15,"a"],"items"]],[3,"e",[7]],[22,[28,[2,[17,[15,"gtmUtils"],"common"],"isArray",[7,[15,"d"]]]],[46,[2,[15,"e"],"push",[7,["__ua_convertScionFields",[15,"b"],[15,"d"]]]]],[46,[3,"f",0],[42,[23,[15,"f"],[17,[15,"d"],"length"]],[33,[15,"f"],[3,"f",[0,[15,"f"],1]]],false,[46,[3,"g",["__ua_convertScionFields",[15,"b"],[16,[15,"d"],[15,"f"]]]],[22,[1,[15,"c"],[2,[15,"a"],"hasOwnProperty",[7,"item_list"]]],[46,[43,[15,"g"],"list",[16,[15,"a"],"item_list"]]]],[2,[15,"e"],"push",[7,[15,"g"]]]]]]],[36,[15,"e"]]],[50,"__ua_convertFieldsToSet",[46,"a"],[41,"b","c","d","e","f","g"],[22,[28,[15,"a"]],[46,[36,[8]]]],[3,"b",[8,"account","\u0026tid","anonymizeIp","\u0026aip","appName","\u0026an","appVersion","\u0026av","contentDescription","\u0026cd","contentGroup","\u0026cg","dimension","\u0026cd","eventAction","\u0026ea","eventCategory","\u0026ec","eventLabel","\u0026el","eventValue","\u0026ev","exceptionDescription","\u0026exd","exceptionFatal","\u0026exf","firebaseCampaignAdNetworkClickId","\u0026aclid","firebaseCampaignAdNetworkId","\u0026anid","firebaseCampaignContent","\u0026cc","firebaseCampaignGoogleClickId","\u0026gclid","firebaseCampaignMedium","\u0026cm","firebaseCampaignName","\u0026cn","firebaseCampaignSource","\u0026cs","firebaseCampaignTerm","\u0026ck","metric","\u0026cm","noninteraction","\u0026ni","page","\u0026dp","referrer","\u0026dr","sampleRate","\u0026sf","screenName","\u0026cd","sessionControl","\u0026sc","socialAction","\u0026sa","socialActionTarget","\u0026st","socialNetwork","\u0026sn","timingCategory","\u0026utc","timingLabel","\u0026utl","timingValue","\u0026utt","timingVar","\u0026utv","title","\u0026dt","userId","\u0026uid"]],[3,"c",[8]],[3,"d",0],[42,[23,[15,"d"],[17,[15,"a"],"length"]],[33,[15,"d"],[3,"d",[0,[15,"d"],1]]],false,[46,[3,"e",[16,[16,[15,"a"],[15,"d"]],"fieldName"]],[3,"f",[16,[16,[15,"a"],[15,"d"]],"value"]],[22,[1,[21,[15,"f"],[44]],[21,[15,"f"],[45]]],[46,[22,[12,[2,[15,"e"],"charAt",[7,0]],"\u0026"],[46,[43,[15,"c"],[15,"e"],[15,"f"]]],[46,[3,"g",[16,[15,"b"],[15,"e"]]],[22,[21,[15,"g"],[44]],[46,[43,[15,"c"],[15,"g"],[15,"f"]]],[46,[2,[17,[15,"gtmUtils"],"common"],"log",[7,"w",[0,"Dropping the invalid UA tag field name ",[15,"e"]]]]]]]]]]]],[36,[15,"c"]]],[50,"__ua_convertIndexedField",[46,"a","b","c","d","e"],[41,"f","g"],[22,[15,"b"],[46,[3,"f",0],[42,[23,[15,"f"],[17,[15,"b"],"length"]],[33,[15,"f"],[3,"f",[0,[15,"f"],1]]],false,[46,[3,"g",[16,[15,"b"],[15,"f"]]],[22,[1,[1,[15,"g"],[21,[16,[15,"g"],[15,"e"]],[44]]],[21,[16,[15,"g"],[15,"e"]],[45]]],[46,[43,[15,"a"],[0,[15,"c"],[16,[15,"g"],[15,"d"]]],[16,[15,"g"],[15,"e"]]]]]]]]]],[50,"__ua_convertCampaignParams",[46,"a","b"],[41,"c","d","e"],[22,[21,[2,[17,[15,"gtmUtils"],"mobile"],"event",[7]],"_cmp"],[46,[36]]],[3,"c",[30,[2,[17,[15,"gtmUtils"],"mobile"],"eventParameters",[7]],[8]]],[22,[15,"b"],[46,[3,"d",[8,"content","\u0026cc","anid","\u0026anid","medium","\u0026cm","campaign","\u0026cn","source","\u0026cs","term","\u0026ck","gclid","\u0026gclid","aclid","\u0026aclid"]]],[46,[3,"d",[8,"anid","\u0026anid","gclid","\u0026gclid","aclid","\u0026aclid"]]]],[47,"e",[15,"d"],[46,[22,[1,[16,[15,"c"],[15,"e"]],[28,[2,[15,"a"],"hasOwnProperty",[7,[16,[15,"d"],[15,"e"]]]]]],[46,[43,[15,"a"],[16,[15,"d"],[15,"e"]],[16,[15,"c"],[15,"e"]]]]]]]],[50,"__ua",[46,"data"],[36,["__ua_main",[15,"data"]]]],
[50,"__cid_main",[46],[36,[2,[17,[15,"gtmUtils"],"mobile"],"containerId",[7]]]],[50,"__cid",[46,"data"],[36,["__cid_main",[15,"data"]]]],
[50,"__gas_main",[46,"a"],[36,[15,"a"]]],[50,"__gas",[46,"data"],[36,["__gas_main",[15,"data"]]]],
[50,"__md_main",[46,"a"],[41,"b","c","d","e","f","g","h","i","j","k","l"],[22,[12,[17,[15,"a"],"eventType"],"CUSTOM"],[46,[3,"b",[16,[15,"a"],"key"]]],[46,[22,[12,[17,[15,"a"],"eventType"],"SUGGESTED"],[46,[47,"c",[15,"a"],[46,[3,"d",[2,[15,"c"],"lastIndexOf",[7,"Param"]]],[22,[1,[29,[15,"d"],[27,1]],[12,[15,"d"],[37,[17,[15,"c"],"length"],5]]],[46,[22,[20,[15,"b"],[44]],[46,[3,"b",[16,[15,"a"],[15,"c"]]]],[46,[2,[17,[15,"gtmUtils"],"common"],"log",[7,"e",[0,[0,[0,"Ignoring unexpected additional parameter ","key in the data (key \u003d ""],[15,"c"]],"")."]]]]]]]]]],[46,[22,[20,[17,[15,"a"],"eventType"],[44]],[46,[2,[17,[15,"gtmUtils"],"common"],"log",[7,"w","Missing expected eventType param"]],[3,"b",[16,[15,"a"],"key"]]],[46,[2,[17,[15,"gtmUtils"],"common"],"log",[7,"e",[0,"Unexpected eventType param value: ",[17,[15,"a"],"eventType"]]]],[36]]]]]]],[22,[20,[15,"b"],[44]],[46,[2,[17,[15,"gtmUtils"],"common"],"log",[7,"e","No parameter key specified in the data."]],[36]]],[3,"e",[30,[2,[17,[15,"gtmUtils"],"mobile"],"eventParameters",[7]],[8]]],[22,[12,[2,[15,"b"],"indexOf",[7,"."]],[27,1]],[46,[3,"f",[16,[15,"e"],[15,"b"]]],[22,[1,[1,[20,[15,"f"],[44]],[12,[17,[15,"a"],"eventType"],"SUGGESTED"]],[17,[15,"a"],"checkEcommerceValue"]],[46,[3,"g",[7,"items","promotions"]],[47,"h",[15,"g"],[46,[3,"i",[16,[15,"g"],[15,"h"]]],[22,[21,[16,[15,"e"],[15,"i"]],[44]],[46,[3,"j",[16,[15,"e"],[15,"i"]]],[22,[2,[17,[15,"gtmUtils"],"common"],"isArray",[7,[15,"j"]]],[46,[22,[21,[16,[16,[15,"j"],0],[15,"b"]],[44]],[46,[36,[16,[16,[15,"j"],0],[15,"b"]]]]]],[46,[22,[21,[16,[15,"j"],[15,"b"]],[44]],[46,[36,[16,[15,"j"],[15,"b"]]]]]]]]]]]]]],[46,[3,"k",[2,[17,[15,"gtmUtils"],"common"],"split",[7,[15,"b"],"."]]],[3,"f",[15,"e"]],[47,"l",[15,"k"],[46,[3,"f",[16,[15,"f"],[16,[15,"k"],[15,"l"]]]],[22,[20,[15,"f"],[44]],[46,[4]]]]]]],[22,[21,[15,"f"],[44]],[46,[36,[15,"f"]]],[46,[22,[21,[17,[15,"a"],"defaultValue"],[44]],[46,[36,[17,[15,"a"],"defaultValue"]]],[46,[2,[17,[15,"gtmUtils"],"common"],"log",[7,"w",[0,[0,"Event does not have parameter "",[15,"b"]],"" and no default value was defined. Returning "undefined"."]]]]]]]],[50,"__md",[46,"data"],[36,["__md_main",[15,"data"]]]],
[50,"main",[46,"a"],[43,[17,[15,"a"],"common"],"tableToMap",[15,"tableToMap"]],[43,[17,[15,"a"],"common"],"stringify",[15,"stringify"]],[43,[17,[15,"a"],"common"],"copy",[15,"copy"]],[43,[17,[15,"a"],"common"],"split",[15,"split"]]],[50,"tableToMap",[46,"a","b","c"],[41,"d","e","f"],[3,"d",[8]],[3,"e",false],[3,"f",0],[42,[1,[15,"a"],[23,[15,"f"],[17,[15,"a"],"length"]]],[33,[15,"f"],[3,"f",[0,[15,"f"],1]]],false,[46,[22,[1,[1,[16,[15,"a"],[15,"f"]],[2,[16,[15,"a"],[15,"f"]],"hasOwnProperty",[7,[15,"b"]]]],[2,[16,[15,"a"],[15,"f"]],"hasOwnProperty",[7,[15,"c"]]]],[46,[43,[15,"d"],[16,[16,[15,"a"],[15,"f"]],[15,"b"]],[16,[16,[15,"a"],[15,"f"]],[15,"c"]]],[3,"e",true]]]]],[36,[39,[15,"e"],[15,"d"],[45]]]],[50,"stringify",[46,"a"],[41,"b","c","d","e"],[22,[20,[15,"a"],[45]],[46,[36,"null"]]],[22,[20,[15,"a"],[44]],[46,[36,[44]]]],[22,[30,[12,[40,[15,"a"]],"number"],[12,[40,[15,"a"]],"boolean"]],[46,[36,[2,[15,"a"],"toString",[7]]]]],[22,[12,[40,[15,"a"]],"string"],[46,[36,[0,[0,""",[2,["split",[15,"a"],"""],"join",[7,"\""]]],"""]]]],[22,[2,[17,[15,"gtmUtils"],"common"],"isArray",[7,[15,"a"]]],[46,[3,"b",[7]],[3,"c",0],[42,[23,[15,"c"],[17,[15,"a"],"length"]],[33,[15,"c"],[3,"c",[0,[15,"c"],1]]],false,[46,[3,"d",["stringify",[16,[15,"a"],[15,"c"]]]],[22,[12,[15,"d"],[44]],[46,[2,[15,"b"],"push",[7,"null"]]],[46,[2,[15,"b"],"push",[7,[15,"d"]]]]]]],[36,[0,[0,"[",[2,[15,"b"],"join",[7,","]]],"]"]]]],[22,[12,[40,[15,"a"]],"object"],[46,[3,"b",[7]],[47,"e",[15,"a"],[46,[3,"d",["stringify",[16,[15,"a"],[15,"e"]]]],[22,[29,[15,"d"],[44]],[46,[2,[15,"b"],"push",[7,[0,[0,[0,""",[15,"e"]],"":"],[15,"d"]]]]]]]],[36,[0,[0,"{",[2,[15,"b"],"join",[7,","]]],"}"]]]],[2,[17,[15,"gtmUtils"],"common"],"log",[7,"e","Attempting to stringify unknown type!"]],[36,[44]]],[50,"split",[46,"a","b"],[41,"c","d","e","f"],[3,"c",[7]],[22,[20,[15,"b"],""],[46,[3,"d",[17,[15,"a"],"length"]],[3,"e",0],[42,[23,[15,"e"],[15,"d"]],[33,[15,"e"],[3,"e",[0,[15,"e"],1]]],false,[46,[2,[15,"c"],"push",[7,[16,[15,"a"],[15,"e"]]]]]],[36,[15,"c"]]]],[42,[1,[15,"a"],[19,[2,[15,"a"],"indexOf",[7,[15,"b"]]],0]],[46],false,[46,[3,"f",[2,[15,"a"],"indexOf",[7,[15,"b"]]]],[22,[12,[15,"f"],0],[46,[2,[15,"c"],"push",[7,""]]],[46,[2,[15,"c"],"push",[7,[2,[15,"a"],"substring",[7,0,[15,"f"]]]]]]],[3,"a",[2,[15,"a"],"substring",[7,[0,[15,"f"],[17,[15,"b"],"length"]]]]]]],[2,[15,"c"],"push",[7,[15,"a"]]],[36,[15,"c"]]],[50,"copy",[46,"a","b"],[41,"c","d"],[3,"b",[30,[15,"b"],[39,[2,[17,[15,"gtmUtils"],"common"],"isArray",[7,[15,"a"]]],[7],[8]]]],[47,"c",[15,"a"],[46,[3,"d",[16,[15,"a"],[15,"c"]]],[22,[2,[17,[15,"gtmUtils"],"common"],"isArray",[7,[15,"d"]]],[46,[22,[28,[2,[17,[15,"gtmUtils"],"common"],"isArray",[7,[16,[15,"b"],[15,"c"]]]]],[46,[43,[15,"b"],[15,"c"],[7]]]],[43,[15,"b"],[15,"c"],["copy",[15,"d"],[16,[15,"b"],[15,"c"]]]]],[46,[22,[1,[29,[15,"d"],[45]],[12,[40,[15,"d"]],"object"]],[46,[22,[29,[40,[16,[15,"b"],[15,"c"]]],"object"],[46,[43,[15,"b"],[15,"c"],[8]]]],[43,[15,"b"],[15,"c"],["copy",[15,"d"],[16,[15,"b"],[15,"c"]]]]],[46,[43,[15,"b"],[15,"c"],[15,"d"]]]]]]]],[36,[15,"b"]]]
]
}

@Okyne can you share event function call from js

@edvenkat
public trackSelectAnimals(specieName: string, subspecieName: string) {
        this.firebase.logEvent('SelectAnimals', {
            SelectAnimalsSpecies: this.getLastTermFromSplit(specieName),
            SelectAnimalsSubspecies: this.getLastTermFromSplit(subspecieName)
        });
    }

Hope every thing fine. Final checkup can you share your GTM trigger screenshot

@edvenkat, I liked the screenshots of both GTM trigger and tag. Hope this, will help.
Thx again.

@Okyne
For selectAnimals Event, the tag should be "EVT -SelectAnimals" not "GAEVT - Species selection"
please recheck from your end as well

EVT- SelectAnimals is a trigger and GAEVT - Species selection is a tag based on this trigger.
It's currently working great on Android but there is nothing on iOS. I use GTM to make the bridge between Firebase ang Google Analytics. When I use my app on iOS, even if, my Firebase console logs every event, GTM doesn't seem to send events to GA.
So I'm not sure GTM for iOS is implemented.

I hope, you installed plugin using below comments.

cordova plugin add cordova-plugin-firebase --save

if Yes, GTM is not available for ios in this plugin
for ios we need to use extra plugin for GTM

https://github.com/devtobo/cordova-plugin-firebase-tagmanager
Please try and let me know .


Sign service provides error UI even when the user cold be returned to the requesting service

A fundamental requirement for sign services has always been the principle that the Sign Service has no UI for the user unless the request can't be returned to the requesting service for one of the following reasons:

The real requestor can't be safely identified
The return address to the requesting service is unknown
The request is a replay attempt
The request is not received within its validity period.

In all other instances, the user MUST be returned to the requesting service with an appropriate status indication in order to allow that application to get the user back and to handle the user in an appropriate manner.
Sign service currently does not meet this requirement. One case is there a request is made for an unsupported certificate type (QC, PKC, QC/SSSCD). If the requested certificate type is not supported, the user is presented by an error page claiming "internal error". In this case the user should be returned to the requesting service with an appropriate error response.

@Razumain Internal error clearly states that something bad went wrong in the checks. Please investigate the checks made in checkRequirements of the KeyAndCert handler and make sure that InvalidRequest is thrown (which will be translated into an error response message being sent back).

There is a bug in the method of sending back an error message. Will fix this.

Fixed in https://github.com/swedenconnect/signservice/pull/66.


Implements thumb voting and transitions to thank you page

Looks good, I think that the json file in the native image xcassets being changed should also fix the image module loading.


If Applied it will fix Critical vulnerability

Thanks the interest @PranotiUplight!
I haven't touched this project in a while.  Partially because the need for this plugin go away with Maven 4 (now in Beta).
Be sure to try it out, and make sure your uses cases work, if you run into any trouble, please contain the Maven mailing list!
https://maven.apache.org/mailing-lists.html
I'll archive this repo and add a note to the README.
That said, if you have any questions about the original implementation please let me know!


Nightmare helper innerHTML

Hi guys,
I'm trying to make helper which will return HTML of the element since grabTextFrom does not work on anchors (Text to fetch) for some reason.
Anyway, helper does not work even though it's pretty same as original grabTextFrom.
    grabHtmlFrom(locator) {
        return this.helpers['Nightmare']._locate(locator).then(function(els) {
            return this.helpers['Nightmare'].browser.evaluate(function(el) {
                return codeceptjs.fetchElement(el).innerHTML;
            }, els[0]);
        }.bind(this));
    }

Thanks in advance!

That's the reason I hate complexity of Nightmare. I can't suggest how to debug it better and I can't see visible problems in your code. Use console.log on server side part, and alert or document.write on clientside part...

No updates here, so I'm closing...


XHR errors appear to come from BDSM - confusing (see attachment)

What if you open the stack trace? In general xhr stack traces aren't very
helpful. You always see the last entry point for the xhr which is usually a
xhr library
On Thu, Dec 17, 2015, 16:50 adam klein<EMAIL_ADDRESS>wrote:

[image: screen shot 2015-12-17 at 4 50 16 pm]
https://cloud.githubusercontent.com/assets/889418/11872511/4a1e8d86-a4de-11e5-9576-b26bf403c5f2.png
—
Reply to this email directly or view it on GitHub
https://github.com/500tech/bdsm/issues/105.

Is this related to the Hook library we're using?

Its related to JavaScript call stack. Hook is one of them.
On Thu, Dec 17, 2015, 23:26 Alex Ilyaev<EMAIL_ADDRESS>wrote:

Is this related to the Hook library we're using?
—
Reply to this email directly or view it on GitHub
https://github.com/500tech/bdsm/issues/105#issuecomment-165585845.

What I mean is that it looks like there's a problem with BDSM.
Maybe we just need to wrap the error message with something that explains
that this is the actual result of the XHR
--

Adam Klein http://il.linkedin.com/in/adamklein500
CTO @ 500Tech.com http://500tech.com/ - Web and Mobile development
hackademy.co.il http://hackademy.co.il/angularjs/about - AngularJS,
Ruby on Rails training
(+972) 52 747 5633

On Thu, Dec 17, 2015 at 11:34 PM, Maayan Glikser<EMAIL_ADDRESS>wrote:

Its related to JavaScript call stack. Hook is one of them.
On Thu, Dec 17, 2015, 23:26 Alex Ilyaev<EMAIL_ADDRESS>wrote:

Is this related to the Hook library we're using?
—
Reply to this email directly or view it on GitHub
https://github.com/500tech/bdsm/issues/105#issuecomment-165585845.

—
Reply to this email directly or view it on GitHub
https://github.com/500tech/bdsm/issues/105#issuecomment-165587145.

Oh, I see. I think that's a great idea.
We should investigate this

This is a tricky one, in general we should look into capturing the stack trace when the request starts and throw that as the error when the request fails for 1 reason or another


Golden Scorpion 721

Golden Scorpion

Hello @AndreiUrban , is there any particular issue that we can help you with?

closing issue. reason: no issue description provided


Schematics (I know it's testing) won't load any types

Loading .schematic files can't be done, nor .schem

Very strange error, not sure why it happens to you. I just tested, I am able to upload schematic file from forge and fabric versions.
Maybe some other mod uses older version of gson library can cause this?
BTW, it supports also litematic files  (I forgot to change description). For schematic file it converts all blocks to obsidian.

Yeah not sure why, any attempts to load any format give me the same error. Everything else in the mod works fine, Forge version for 1.19.2 , perhaps that version is the issue since it's not 1.19.4?

It was never tested in 1.19.2. You get the same error because of serialization code in google json library, not in actual schematics code.
I will only update 1.19.4 going further.

Makes sense, thanks again for this tool!


[Bug Report] unknown RCON_PORT leads to error in backup

Have you read the Important information text above

[X] Yes i did

Current behavior
Errors in Log, yes they are duplicated due to https://github.com/jammsen/docker-palworld-dedicated-server/issues/169, but a backup file is still generated, so this is not dramatic.

Logs
time="2024-02-09T19:00:00+01:00" level=info msg=starting iteration=15 job.command=/backupmanager.sh job.position=1 job.schedule="0 * * * *"
time="2024-02-09T19:00:00+01:00" level=info msg=starting iteration=15 job.command=/backupmanager.sh job.position=0 job.schedule="0 * * * *"
time="2024-02-09T19:00:00+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=1 job.schedule="0 * * * *"
time="2024-02-09T19:00:00+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=0 job.schedule="0 * * * *"
time="2024-02-09T19:00:05+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=0 job.schedule="0 * * * *"
time="2024-02-09T19:00:05+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=1 job.schedule="0 * * * *"
time="2024-02-09T19:00:05+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=1 job.schedule="0 * * * *"
time="2024-02-09T19:00:05+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=0 job.schedule="0 * * * *"
time="2024-02-09T19:00:06+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=1 job.schedule="0 * * * *"
time="2024-02-09T19:00:06+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=0 job.schedule="0 * * * *"
time="2024-02-09T19:00:06+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=0 job.schedule="0 * * * *"
time="2024-02-09T19:00:06+01:00" level=error msg="error running command: exit status 1" iteration=15 job.command=/backupmanager.sh job.position=0 job.schedule="0 * * * *"
time="2024-02-09T19:00:06+01:00" level=info msg="cli: execute: auth: rcon: dial tcp: address tcp/###RCON_PORT###: unknown port" channel=stderr iteration=15 job.command=/backupmanager.sh job.position=1 job.schedule="0 * * * *"
time="2024-02-09T19:00:06+01:00" level=error msg="error running command: exit status 1" iteration=15 job.command=/backupmanager.sh job.position=1 job.schedule="0 * * * *"

Desired behavior
No Error since port is actually set.
docker-compose.yml:
...
    environment:
      - RCON_ENABLED=false
      - RCON_PORT=25575

~$ docker exec -it palworld bash
steam@a8d96adfe66c:~/steamcmd$ echo $RCON_PORT
25575

Links to screenshots
No response
To Reproduce
Steps to reproduce the behavior:

Check docker container logs, there's unfortunately no more details

Software setup

OS: Linux 4.19.0-23-amd64 #1 SMP Debian 4.19.269-1 (2022-12-20) x86_64 GNU/Linux
Docker version 23.0.1, build a5ee5b1
Docker Compose version v2.16.0

Hardware setup

vCPU: AMD Ryzen 5 5600G with Radeon Graphics (12 cores)
RAM: 32 GB
Disk: 512 GB SSD

Additional context
No response

Note: I had used an old image from around 9days ago. I just updated to the latest image (tag f30bef1) to check whether it still happens.

Can't find old image tag in dockerhub but it was this one.
"Id": "sha256:c824f4db1bb383ce80b2cec350d3945d8c03d185c903ff03df343fb031177ade",
        "RepoTags": [],
        "RepoDigests": [
            "jammsen/palworld-dedicated-server@sha256:e1b30e46fe1c5c77badc25ce4718f7f4f22a4575490fbf8f6613e3463e80c2a7"
        ],
        "Parent": "",
        "Comment": "buildkit.dockerfile.v0",
        "Created": "2024-01-31T16:58:04.434581211Z",

You have RCON set to false so it's normal for the rcon commands used in the backup cron job to give that error.
If RCON is true it will configure the rcon.yaml (the file containing the IP - in this case localhost - and the port) and those errors won't show up. It's expected behavior for this to happen for now.

Ah ok, it'll enable it then. Doesn't really matter as long as I haven't a port forwarded for it I guess. Is there a client to interact with this rcon?

@judos

Is there a client to interact with this rcon?

Sure, https://github.com/jammsen/docker-palworld-dedicated-server/blob/develop/README.md#gameserver-with-rcon-cli-tool


Suggestion: attribute form of submit

Would be used like this:
#[inventory::submit]
static X: Foo = Foo { ... }

This form would be useful when you want to use the value directly as well as "registering" it for use later.

I would prefer not to build this into this crate, but an attribute like that could be implemented by a downstream crate.


refine spill log

What problem does this PR solve?
Issue Number: ref #6528
Problem Summary:
What is changed and how it works?

refine restore log
add lock when restore

Check List
Tests

[ ] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/merge


Singleton leader role change reported before becoming leader

Hi,
we are just looking how to monitor the role changes via the report listener. The method toSingletonLeader seems to call the report listener before the state is changed to the leader. All other ROLE_CHANGE reports are invoked after the state is changed. Likely not working right.

  publishRaftNodeReport(RaftNodeReportReason.ROLE_CHANGE);

    toLeader();

Thanks,
Michal

Hi Mical,
This publish call is for the FOLLOWER -> CANDIDATE state change: https://github.com/MicroRaft/MicroRaft/blob/master/microraft/src/main/java/io/microraft/impl/RaftNodeImpl.java#L1724-L1730
in toLeader() method, there is another publish call for the CANDIDATE -> LEADER change: https://github.com/MicroRaft/MicroRaft/blob/master/microraft/src/main/java/io/microraft/impl/RaftNodeImpl.java#L1143-L1148
You can see it in a test case here: https://github.com/MicroRaft/MicroRaft/blob/master/microraft/src/test/java/io/microraft/impl/SingletonRaftGroupTest.java#L84-L87

Indeed. I missed that it calls this.toLeader() and not state.toLeader(). Thank you.


Remove unused type stubs

These stubs were probably added to the project when we were using some dependencies that were removed or replaced. We can safely remove these type stubs now.

Enabled auto-merge, as it is pretty trivial.

Updated to resolve the conflict, needs a new approval probably...

Woops, one more conflict resolution.

ping @shsms


python312Packages.clikit: refactor

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 349601

x86_64-linux

:white_check_mark: 21 packages built:

frogmouth
frogmouth.dist
monitorets
python311Packages.clikit
python311Packages.clikit.dist
python311Packages.rmcl
python311Packages.rmcl.dist
python311Packages.rmrl
python311Packages.rmrl.dist
python311Packages.xdg
python311Packages.xdg.dist
python312Packages.clikit
python312Packages.clikit.dist
python312Packages.rmcl
python312Packages.rmcl.dist
python312Packages.rmrl
python312Packages.rmrl.dist
python312Packages.xdg
python312Packages.xdg.dist
rmfuse
rmfuse.dist


Timestamp calculation in SenMLResolver class correction

Please find in commit https://github.com/eclipse/leshan/commit/4db7b871bd1bc752af334cf2ee268b06c6d9db5f  changes fixing bug described in https://github.com/eclipse/leshan/issues/1301

Integrated in master (squashed commit b14a7406f5b12f98c577465605f7e6c20db3f36f)

Thx for catching this and providing a fix :pray: !
Next time, you could eventually :

refer the issue number in commit message.
when you polish PR (e.g. code formatting)  before I review it your could squash your fix in one commit, then push force. (I mean in this case, the reviewer don't need to see 2 commits)

Thx again :)


[$500] Web - Workspace- New capability to set tracking rate and unit persists after page refresh

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:
Precondition: Add the VBA into your testing account

Launch the app
Log in with expensiafail account
Go to Setting
Select any Workspace
Go to Reimburse expenses
Refresh the pages

Expected Result:
New capability to set tracking rate and unit appears when go to reimburse expense page
Actual Result:
Tracking rate and unit does not appear and appears for a brief moment when refreshing the page.
Workaround:
Unknown
Platform:

Where is this issue occurring?

Web

Version Number: <IP_ADDRESS>
Reproducible in staging?: Yes
Reproducible in production?: No
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://user-images.githubusercontent.com/93399543/152598163-121bfbea-ed3d-44a1-9159-4f4408e5eab8.mp4
Expensify/Expensify Issue URL:
Issue reported by: Applause
Slack conversation:
Issue was found when executing: https://github.com/Expensify/App/pull/6839
View all open jobs on GitHub

Triggered auto assignment to @Julesssss (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

Hi @kbecciv can you explain why we should not see the mileage tracking? I can't see any requirement for the rate to be hidden:

New capability to set tracking rate and unit is not seen after refresh the page

Hi @Julesssss
As per #6839 "set tracking rate and unit" option should appear in ""Reimburse expenses" page. It appears if the account does not have VBA added, and if the account has VBA it does not appear in ""Reimburse expenses" page and appears for a brief moment when refreshing the page. So expected and actual results should be corrected. Attaching a new video here with accounts which has VBA account and which does not have it
https://user-images.githubusercontent.com/43996225/152815273-dc090daf-17f7-4eb4-9e30-8e7c17ee2af3.mp4
.

Okay, thanks for explaining. I'm having an unrelated issue adding a VBA account currently, but I think we can start to review proposals.

Triggered auto assignment to @stephanieelliott (External), see https://stackoverflow.com/c/expensify/questions/8582 for more details.

Triggered auto assignment to Contributor-plus team member for initial proposal review - @rushatgabhane (Exported)

Triggered auto assignment to @Beamanator (Exported), see https://stackoverflow.com/c/expensify/questions/7972 for more details.

Posted to Upwork: https://www.upwork.com/jobs/~0152b595bdb97e852c

@stephanieelliott FYI I don't think you need to unassign the Engineer manually, in this case I believe @Julesssss was ok with staying assigned b/c he also triaged the issue on the engineering side.
@Julesssss do you want to make this issue? Feel free to swap if you want it 👍

Yeah, I swapped back, all hail the FairSelection algorithm

Price 2x'd to $500

@Julesssss it looks like you're still not assigned 😅 I'll assign you if another week goes by 😈

I was so focused on writing that comment that I forgot to assign myself 😅

2x'd this on Upwork
https://www.upwork.com/jobs/~0152b595bdb97e852c

Triggered auto assignment to @NicMendonca (External), see https://stackoverflow.com/c/expensify/questions/8582 for more details.

I'm about to go OOO, so reapplied the label to assign this to another CM team member (thanks @NicMendonca)

doubled again -- https://www.upwork.com/jobs/~0152b595bdb97e852c

Forgot to change title ☝

doubled again - https://www.upwork.com/jobs/~0152b595bdb97e852c

I have been looking into this.  It seems that

Tracking rate and unit does not appear and appears for a brief moment when refreshing the page.

Since the pre-req is to add a VBA, the reason why it does not show up is simply because for the VBA view we do not have the sections for tracking distance and rates.
NoVBAView: https://github.com/Expensify/App/blob/4b5abf63ee24c2031945a3c119330cc86f45985b/src/pages/workspace/reimburse/WorkspaceReimburseNoVBAView.js#L159-L188
VBAView: https://github.com/Expensify/App/blob/4b5abf63ee24c2031945a3c119330cc86f45985b/src/pages/workspace/reimburse/WorkspaceReimburseVBAView.js#L20-L65
The solution is to copy over the section and state to the VBAView.

@OneDevStopShop thanks for that proposal! Before we review, can you please link your Upwork profile here? Thanks!

Sorry for the delay, I'll review the proposal tomorrow.

@rushatgabhane I do not see why this would not be applicable on mobile devices as well.  The code just is not there and so it should not show up unless there was an issue with determining VBA

Okay, so I'm just thinking out loud if I understand this issue.

Tracking rate and unit should NOT appear if the user doesn't have VBA.
Tracking rate and unit should be visible if the user has VBA.

@OneDevStopShop I like your proposal, but I'm curious why tracking rate is shown for a brief moment on refreshing.

Hi I am having trouble with Upwork and cannot complete jobs at this time. Please find someone new for the job and sorry for the inconvenience https://github.com/Expensify/App/issues/7917#issuecomment-1093009100

@OneDevStopShop when do you reckon you can get your Upwork profile fixed? I don't want to see your efforts wasted for this issue

@OneDevStopShop any updates?

@OneDevStopShop's Upwork profile has been deleted and they don't meet the prereq for working on E/App jobs
@Julesssss I'd suggest that we use @OneDevStopShop's proposal and

Fix this issue internally, or
I could fix it (I'll submit a formal proposal if we wanna do this)

Ah, thanks for pointing that out.
Sure, would you like to implement it @rushatgabhane? If @OneDevStopShop is able to get an Upwork profile up I think we would still happily pay out a bonus for the proposal.

would you like to implement it.

@Julesssss yes !!
Borrowed Proposal
Move the track distance section, and it's related methods from NoVBAView to VBAView.
https://github.com/Expensify/App/blob/4b5abf63ee24c2031945a3c119330cc86f45985b/src/pages/workspace/reimburse/WorkspaceReimburseNoVBAView.js#L159-L188
https://github.com/Expensify/App/blob/4b5abf63ee24c2031945a3c119330cc86f45985b/src/pages/workspace/reimburse/WorkspaceReimburseVBAView.js#L20

Hey @rushatgabhane. Just one thing, I noticed you'll be out to study. Did you still want to work on this as a contributor? No worries if not, it's completely up to you :)

@Julesssss thanks for asking, yes I still want to work on this as a contributor.
I have a diff from the time I tested the proposal, so I can handle this one.

Oh no, gotta run!
@Julesssss I won't be able to submit a PR for this issue. Please make it internal, or open to all contributors.
Thanks for understanding!

No worries. Good luck with your exams!

Hey @NicMendonca, we need to figure out how to re-roll for an external contributor somehow. Any ideas? Else I guess we can ask in the Slack channel to see if anyone wants to be manually assigned.

I think you can try reapplying Exported (even though that'll also post in #expensify-open-source) :D

Lol. Poor effort bot.

Okay, manually it is. Posting in Contributor+

Sweet.
FYI @parasharrajat, we had a proposal approved but the contributor disappeared. So we're back to awaiting proposals.

PROPOSAL
We need to copy all the methods/components we use on tracking rate and unit from NoVBAView to VBAView:

@Julesssss We would need your review here. Thanks.

I'm totally with you here @parasharrajat. But just to be 100% sure, you're suggesting these changes are made to @mateusbra's proposal, right?

I think I'd prefer to merge the two similar Components.

I am fine either way. Either @mateusbra can do this or I can create the PR. Your call? It doesn't look time-consuming.

I think I'd prefer to merge the two similar Components.

I updated my proposal in order to cover the requested changes, I'll use it if I be chosen to create the PR.

Okay, let's get you both assigned, @parasharrajat as C+ to ensure the PR gets a proper review

Proposal sent on Upwork! Gonna rise a PR soon.

PR ready for review.

Issue not reproducible during KI retests. (First week)

PR deployed to PROD 3 days back.

Hey @NicMendonca can we please pay out.
Also @parasharrajat, what exactly do we need to update? The $4000 bounty looks right to me, but please correct me if I missed something.

The title needs to be updated to have [HOLD for payment date]

Issue not reproducible during KI retests. (Second week)

@NicMendonca
Ping for


Documentation improvements

Added example for add use case that is supported but was missing from the docs
Changed nesting level for navigation inside topics so that it should be easier to navigate articles with lots of headers and, as an experiment, changed structure of add.md accordingly
Changed the structure of general navigation tree to bring attention to materials that seem neglected

@Jolanrensen Thank you c:


Add in docs that "location" is now an extracted module

We should add in this page: https://facebook.github.io/react-native/docs/geolocation
that the module is extracted here (and so it's not global anymore): https://github.com/react-native-community/react-native-geolocation
If someone gives me the ok, I'll prepare the PR

Go for it.

@abhinavsagar sorry but I can't find the geolocation md file inside the docs folder but I can't find it under versioned_docs.
What should I do? As you see under 0.60 the geolocation api is still there: https://facebook.github.io/react-native/docs/geolocation

The deprecation note has been added in the PR #1673 so the reported issue should be fixed now.


Support loading from an enhanced WADO server

Using FO DICOM example for building a WADO service using WebAPI

look at FO DICOM JPIP support


Subscribe repos example?

Regarding atrium-api/src/com/atproto/sync/subscribe_repos.rs
It would be great to see some sort of example on how to use this. From brief reading of the code, it seems to not be implemented yet, as I cannot find anything regarding reading streams, events or anything like that. Is that correct?

Unfortunately, the subscription feature is not yet implemented.
I would like to use it too and will do my best to implement it. 😵💫

If it is helpful, I did some prototyping work with decoding the firehose here:
https://github.com/timfpark/firehose-prototype/blob/main/src/main.rs
I've made it through the Header, Commit, and RepoOp structures after evaluating a bunch of CBOR deserializers and landing on ciborium in conjunction with serde. The principal challenge from here is decoding the CAR file in the commit as there does not seem to be an implementation of a CAR codec in Rust yet.  (There are versions in JS https://github.com/ipld/js-car and Go https://github.com/ipld/go-car).  Let me know if anyone knows about an existing CAR decoder implementation.
But it still should be possible to use this without block support for a large number of other scenarios like triggering on created posts, deleted follows, liked posts, etc. so probably ok deferring the CAR decode until later.
Hopefully this is helpful.

Oooh very cool prototype implementation, thank you!
I will try to implement something like this with your codes as a reference!

Bisky has methods for reading records from the firehose that are working, see here:
https://github.com/jesopo/bisky/tree/jess/firehose

Also, I discovered a library for CAR in Rust here: https://github.com/dapplion/rs-car/tree/master

I've merged #15 which includes firehose example.
There is still an issue with images embedding not being deserialized correctly, but I think it should work correctly for just extracting texts.


chore: update protobuf to v1.34.1

What type of PR is this?
chore

Check the PR title.

[ ] This PR title match the format: <type>(optional scope): <description>
[ ] The description of this PR title is user-oriented and clear enough for others to understand.
[ ] Attach the PR updating the user documentation if the current PR requires user awareness at the usage level. User docs repo

(Optional) Translate the PR title into Chinese.
chore: 升级 protobuf 版本至 v1.34.1
(Optional) More detailed description for this PR(en: English/zh: Chinese).

en:
zh(optional):
(Optional) Which issue(s) this PR fixes:

(Optional) The PR that updates user documentation:

v1.34.1 是能支持 Go1.17 的最新版本，v1.34.2 要求 Go1.20 了


TUF: Target naming for usage

Description
In the next root-signing, we'll be migrating targets for fulcio under a fulcio subdirectory, and rekor under a rekor subdirectory (and keeping old targets for compatibility before we remove them).
This change was due to the fact that we had created delegations that were allowed to sign off on any path, but we actually only intend on certain delegations to add/update targets for a certain usage type (e.g. a delegation managing rekor rotations should only sign on the rekor/** space).
When we do this, fulcio targets will now be found on fulcio/* and rekor targets will be found on rekor/*. This may simplify some of the expressions for target matching SIGSTORE_FULCIO_CERT_TARGET_REGEX and SIGSTORE_REKOR_PUB_KEY_TARGET, since now their regex are simply fulcio/* or rekor/*. Old clients may continue to use this for a few months, given that we will continue supporting the top-level targets at their given paths, but we'd like clients to start moving towards retrieving fulcio certs by retrieving all targets under fulcio/*.
A few questions:

Does this targets() func retrieve delegated targets? Or just top-level targets? One way to find out is if you find a revocation.list returned in the current root. That is a delegated target not listed in the top-level targets.
When we totally remove the top-level original paths (rekor.pub and fulcio*.crt.pem) in favor of nesting them under subdirectories, will you need to continue to support old clients?

tagging @flavio who worked on the TUF patches.

@asraa sorry for the late reply, this got buried into my notifications and then I forgot about it :pray:
Has this change took place? I've downloaded the TUF repository using tuftool (which is based on the same set of rust libraries we use to interact with TUF) and I didn't find any directory inside of it. I found exactly what is being described here under the targets section of the README.
To address your questions:

Does this targets() func retrieve delegated targets? Or just top-level targets? One way to find out is if you find a revocation.list returned in the current root. That is a delegated target not listed in the top-level targets.

In theory it should handle also the delegated target, however I see only the contents of the README I linked above.
Reminder: I'm not a TUF expert, I might be missing something obvious

When we totally remove the top-level original paths (rekor.pub and fulcio*.crt.pem) in favor of nesting them under subdirectories, will you need to continue to support old clients?

I think we won't need to do that.

Closing, as far as I can see the change of Sigstore's TUF repository layout never happened.


[MM-40610] add 5px right border to allow scrollbars

Summary
Add a 5px right hand border to allow use of scrollbars in the desktop app.  Per MM-40610 the scrollbar component used in the desktop app is very narrow and almost completely overlaps the Windows area used for grabbing the side of the window to resize it.  This PR shrinks the post-list and admin console div by 5 pixels to avoid that.
Ticket Link
Fixes: https://mattermost.atlassian.net/browse/MM-40610
Related Pull Requests
None
Screenshots
Desktop app/Chrome Post list before:

Desktop app/Chrome Post list after:

Firefox Post list before:

Firefox Post list after:

Desktop app/Chrome System console before:

Desktop app/Chrome System console after:

Firefox System console before:

Firefox System console after:

Release Note
-Moved scrollbars slightly away from the edge of the window to make it easier to grab them on the desktop app
-Restyled many of the native scrollbars to more closely match the custom scrollbars

Hello @kelderek,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.
Per the Mattermost Contribution Guide, we need to add you to the list of approved contributors for the Mattermost project.
Please help complete the Mattermost contribution license agreement?
Once you have signed the CLA, please comment with /check-cla and confirm that the CLA check is green.
This is a standard procedure for many open source projects.
Please let us know if you have any questions.
We are very happy to have you join our growing community! If you're not yet a member, please consider joining our Contributors community channel to meet other contributors and discuss new opportunities with the core team.

Good call @esethna, I forgot about that.  Will take a look at that presently

Not sure why the test server creation failed messages are coming up or how to view the logs the message references.  Maybe those are delayed from the times when I made the linter angry?
Also looking at Boards and Playbooks, similar adjustments would have to be made there, but it looks like those are separate Github repos so would have to be separate PRs, if I understand correctly.

Also looking at Boards and Playbooks, similar adjustments would have to be made there, but it looks like those are separate Github repos so would have to be separate PRs, if I understand correctly.

Good question. @devinbinnie thoughts? How can we ensure we've gotten all the locations that could be impacted by this ux-defect?

@kelderek appreciate you jumping in to fix this. And as a bonus, it's hacktoberfest!

@esethna Are pinned posts the same as saved posts?  I don't see scrollbars on the pinned posts or search boxes in my vanilla 7.3.0 instance.  I posted back on https://github.com/mattermost/desktop/issues/1513 about that - they are actually there but being hidden by the margin-right property.
If you think it makes sense, I could try to add changes to those on this PR, or start another.

@kelderek pinned posts (posts pinned in a specific channel), saved posts (posts saved by you across all your channels), recent mentions (mentions of your username across all your channels), and search all use the right-hand side pane for displaying results

Ah ok I see now.  I will check on all four of those

turns out the scrollbars are actually there (the same auto-hiding ones as on the channel list left hand sidebar) but its color was the same as the background so it was invisible.  Working on changing the color and position of the scrollbar now.  Almost there but I have it applied to the wrong spot.  I am done for today, but will pick this back up this weekend.  I think I am almost there!

Found and fixed a graphical issue with using the right property in the thread view.  When using a wide enough layout for threads to show up as a third column, because the right property shifted everything the text edit box in the final div was overlapping and hiding the left hand vertical border.  Switched to using margin-right instead which doesn't have that problem

+1 Thanks for the detail above, 100% agree with your future considerations, really appreciate the work you've done here. Will leave it in the hands of dev and QA for final reviews. Thanks again! @kelderek

All the checks passed and I have run through things in the desktop app and Firefox one last time and all looks good.  Will be hands off now unless requested otherwise.  Thanks @esethna

I hit re-request review for AshishDhama after making their suggested changes, but it looks like it removed the review request for jgilliam17 Apologies if I wasn't supposed to his re-request review; I am new to the github PR review process. I assume it will re-add jgilliam17 or do you need to do that, @esethna ?

@kelderek Hey no worries it’s a bug or maybe a feature, not your fault. Thanks for working on the feedback.

@matthewbirtch Change based on your feedback has been implement and it is ready for review again.  Thanks!

Looking at this from a UI standpoint, we now have an awkward space created here caused by the extra 5px gap added on the right of the scrollable panes. This doesn't look great, unfortunately. I wonder if we remove the scrollbar track background if that will help with this awkwardness.
If we do remove the track background, it might create other problems with the hover states for posts not spanning the full width.

I definitely hear you @matthewbirtch Here are my two cents on the topic:

It definitely felt kinda of bad and kludgy at first.  After having lived with it for a bit, I no longer think it looks weird and the very thin scrollbar in the app on the far right edge now looks weird to me.  Browser versions look fine to me as well, although I have to admit with Firefox's chunkier scrollbars do look a bit odd not being on the right.  There is a CSS property scrollbar-width, as far as I can tell it is only supported on Firefox 64+ anyway, that can be set to thin making Firefox look basically like the app and other browsers.

As shown in some screenshots here https://github.com/mattermost/desktop/issues/1513#issuecomment-1103210555 Slack's app apparently also has a gap, although theirs looks smaller

We could potentially change to using the custom scrollbar for the post list rather than the native scrollbar, which would also improve consistency within the app.  Not sure how big a lift that would be.

For reference, here is what Firefox looks like with scrollbar-width: thin

@kelderek I think it would look better without the track background color though. Is that something you could give a try?

3. We could potentially change to using the custom scrollbar for the post list rather than the native scrollbar, which would also improve consistency within the app.  Not sure how big a lift that would be.

This would be great, but I'm not sure what would be involved and the level of effort we'd be talking about.

@matthewbirtch Agreed, it would be better without the track visible.  All the other systems had an invisible track as well.
I looked into it a bit earlier today.  For webkit based systems like chrome, edge, and the desktop app we could do it easily by changing the the -webkit-scrollbar-track alpha in from the 0.1 it is now to 0.  That will make it invisible.  Firefox would need an alternative solution and the only thing I have been able to do so far is change its color but not make it transparent.  If we match it to the theme color then maybe that is viable, but it certainly isn't may favorite approach.
I will take a look tomorrow to see if moving to the custom scrollbar is something I am capable of doing.  Even if I can't, I think that even though this PR isn't perfect, it represents a step forward. Especially for users of the desktop app where there the area for clicking the scrollbar is currently only 1 or 2 pixels wide.

Firefox would need an alternative solution and the only thing I have been able to do so far is change its color but not make it transparent. If we match it to the theme color then maybe that is viable, but it certainly isn't may favorite approach.

If you're using hex values for firefox scrollbar colors, you should be able to set the alpha to 0 by adding 00 on the end of your hex color. For example: #FFFFFF00 would be transparent white

Thanks; adding the trailing zeros works!  I checked on some of the themes and there are at least two different colors for the part of the scrollbar that actually gets dragged, so now I just need to find the variable the themes use for that so the bars stay theme consistent

@kelderek you can use make fix-style to fix lint issues.
I have one more suggestion if that makes sense. Use this mixin at other places as well.
@mixin scrollbar-position-mixin{
    position: relative;
    right: 5px;
    background-color: rgba(var(--center-channel-color-rgb), 0.32);
}
.scrollbar--position {
@include scrollbar-position-mixin;
}

Thanks @AshishDhama  - I am an admin by trade and haven't done any real coding in 20+ years so I don't know the current practices.  How do I use make fix-style?  Do I just post it as a comment here and the bot will pick it up?

@kelderek Oh sorry I just assumed, it’s a custom command we have built as an alternative to npm run fix
you can find a bunch of other commands here https://github.com/mattermost/mattermost-webapp/blob/master/Makefile.

Thanks @AshishDhama - I am an admin by trade and haven't done any real coding in 20+ years so I don't know the current practices. How do I use make fix-style? Do I just post it as a comment here and the bot will pick it up?

@kelderek On a side note we can help you change that, please feel free to reach out on our community server https://community.mattermost.com/ if you are interested in open source.

@AshishDhama Ok, I think that might not apply in my use case.  Every commit was supposed to be a a quick one so I have literally been doing everything via editing the source on github directly.  I keep thinking I don't actually need to setup a local dev environment because it's just one more thing haha.  That's why there are so many rapid commits which I am sure is poor coding form, sorry!

@kelderek we have gitpod setup which runs like a local setup, You can try that next time https://github.com/mattermost/mattermost-gitpod-config (if that works for you).

That's why there are so many rapid commits which I am sure is poor coding form, sorry!

It's totally fine. Thanks for the contribution you are doing a great job.

@AshishDhama Thanks for all the help and encouragement!  There is a lot going on with Gitpod and it took a minute to get my head around it, but once I did it was super helpful!  I was able to use it to test a bunch of stuff way more rapidly than I had been doing, and I even used make fix-style to fix yet another linter error on parameter order!
@matthewbirtch I haven't yet looked at the custom scrollbars, but I have the thin scrollbars on Firefox now to better match other browsers, and transparent scrollbar tracks implemented for Firefox and Webkit browsers.  I think it is ready for you to take another look to see if you feel it is a net improvement over the current design.  Thanks!

Thanks @kelderek. I just noticed that the scrollbar for the Saved Posts right side pane behaves differently than the thread view right side pane? I assumed all RHS views would be the same, but it looks like that is not the case right now. We should make sure all Right panes behave the same with the scrollbar. Is this something you could take a look at? Or maybe @AshishDhama could help identify those as well.

Search Results RHS
Saved Posts RHS
Pinned Posts RHS
Recent Mentions RHS
Channel Info RHS
Channel Members RHS

Also, now the threads list items in the Threads inbox view don't span the full width because of the scrollbar. Ideally, we find a way for the scrollbar to sit on top of everything without having to push all content to the left like Slack does, but it sounds like that requires a custom scrollbar?

Also, I noticed the firefox scrollbar width is 6px - I like the narrower bar. Can we make Chrome's the same?

@matthewbirtch You are correct that the scrollbars are different, that is because some are native scrollbars and some are custom scrollbars.  The quickest way to tell which is which for Mattermost is the custom ones are all set to hide after 0.5 seconds when the mouse isn't over them.  Getting them all to be consistent, which I agree would be ideal, would require switching out the native ones for custom ones.  I will try to get a feel for how easy/hard that will be today.  My gut is that it would probably be non-trivial and would be better in a separate PR, but we'll see how it goes.  Luckily there are plenty of places it is used so already that I can reference.
You are also correct about the threads list that this does shrink it by 5px for the margins, and afaik the only way around would be the custom scrollbars because they sit on top of the content in their own div, whereas the native ones are a part of the content div.  This also applies to the post list, system console, and anywhere else native scrollbars are used.
I believe the Chrome toolbar size change should be very quick and easy, I will take a stab at that shortly.

@matthewbirtch I changed the scrollbar width to 6px for webkit browsers like Chrome and the mattermost app, but I have mixed feelings about it.  On the one hand, I agree that it looks nicer but overall and matches the custom scrollbars.  On the other hand I feel like usability takes a hit because the target is smaller.  Even with that, the 5px right hand border I added still gives the desktop app users a significantly bigger target than they had before, so still a net win.
I do find it surprising you said that the scrollbar on Firefox was 6px.  On my Windows 10 system, the Firefox thin scrollbar is 8px (what Chrome was before my last change). Are you on a Mac by any chance?  It appears that Firefox is using OS specific widgets.
When I looked it at on my Kubuntu linux machine at home, which has narrow scrollbar widgets, the regular size Firefox scrollbar was already thin (prob 6px, didn't check it) and the thin setting made it extremely thin, probably only one or two px.  Luckily when you roll over it, it changes to a wider scrollbar, but even then it is still thinner than Firefox on Windows.  I do have an old Mac I could try things out on, but it no longer gets MacOS updates so I don't know if it would represent what current Mac users see.

I do find it surprising you said that the scrollbar on Firefox was 6px. On my Windows 10 system, the Firefox thin scrollbar is 8px (what Chrome was before my last change). Are you on a Mac by any chance? It appears that Firefox is using OS specific widgets.

Yep, I'm on mac

@matthewbirtch I took a stab at trying to add the custom scrollbar to the main post list and didn't have any success.  It is definitely a non-trivial operation for an amateur like me.  I agree that ultimately it should be done, but I think it would make more sense as its own issue.
Thanks to everyone's help, I have been able to expand this PR to include setting the size, shape and color of the native scrollbars to better match the custom scrollbars.  I think that moving the remaining panes away from the native scrollbars is out of scope for this PR, and beyond my time and skills at the moment.
What are your thoughts on moving forward with this PR without fully standardizing on the custom scrollbars?

@AshishDhama @matthewbirtch Just wondering where things are with this PR; is it still being evaluated?  It has been a week since I heard anything about it.

Sorry for the delay @kelderek. There have been some internal discussions about this and whether it's the right approach or not. I also noticed a few places where this creates awkwardness in the layouts:

In the Threads view, the bottom border of the Thread header in the preview pane does not span all the way to the right edge now (due to the 5px margin that's been added)

Also in the Threads view, in the inbox list when you hover over an item the background does not span the full width due to the new scrollbar style which feels a bit awkward as well. (see screenshot above)

When viewing a Thread in the RHS, if you hover over a message, the background does not span the full width due to the new scrollbar style which feels a bit awkward as well.

It's very possible there are other areas affected, but these are the ones I noticed

Thanks for getting back to me!  I just didn't want to get lost in the shuffle.    To address your specific points:

It looks like if I move the margin-right from .ThreadPane into .ThreadViewer, that clears up the line not going all the way over when viewing a thread from the thread.  Unfortunately it messes up viewing a thread from the post list.   .post-right-comments-container may be another option but I haven't tested it fully yet
Thread list:

Post list:

2 & 3) Fair points.  It doesn't look bad when up against a scrollbar, but you are right that overall it is not ideal
As for whether it is the right approach or not, I think it is and isn't.  For the custom scrollbars, I think it works and shouldn't cause any problems because it just floats over the content div.  The places which are using native scrollbars are where we run into problems like the ones you outlined because the scrollbar is part of the content.  The right approach for those would be to convert them over to custom scrollbars to match the other parts of the system.  That is unfortunately beyond my current time and/or ability.
Unless the full conversion to custom scrollbars is imminent, I still feel that this a useful stop-gap until someone implements custom scrollbars.  Personally, I still think the pros outweigh the cons, but if you all decide this isn't the way you want to go, just let me know.  Thanks!
Here are the pros as I see them:
-Usability gain of having a reasonable amount of pixels available to grab the scrollbar in the desktop app
-Makes the scrollbars visible on the RHS areas
-Improvements to scrollbar appearance consistency (particularly for Firefox)
And the cons:
-Not as visually polished due to the issues above

For the record, @kelderek I'm in agreement that the usability improvements outweigh the UI polish issues here. Beyond this PR, I would like to ask help from web platform team take on the effort (or potentially open a HW campaign) around unifying the scroll bar components. cc// @m1lt0n @hmhealey
My personal experience on Windows is that these scroll bars are acutally preferable to what we have now from a styling perspective. See examples:
Current:

This PR:

@matthewbirtch and UX team, do you guys see the UI issues as blockers to merging, or are we okay to merge this, soak on community and then evaluate further if we find new corner cases?

@matthewbirtch The thread pane gap should be fixed now (first item in your last post) is fixed now.  As for the issue of the post under the cursor being a different color, for reference the current behavior does the same but it is less noticeable due to the gray scrollbar track:

If leaving the track gray would be better than transparent, that is certainly an option, but then it would be less consistent with the custom scrollbars.
Also added to this commit:
-Changed style naming to be more descriptive and accurate
-Worked out how to properly move the custom whole scrollbar rather than just the thumb portion.  Works out the same from an end-user perspective because the track is transparent, but is a more sensible approach
-Adjusted Firefox styling for for post entry scrollbar that shows up when the post entry box goes over half the screen's height
Here are some other places where the Firefox native scrollbars could be restyled:
-Channel member list on RHS (took a stab at it but haven't figured it out yet because I don't React and TypeScript and scrollbar-width does not inherit)
-Emoji picker, both default and gfycat tabs (haven't tried to adjust)
-@ direct message user picker (haven't tried to adjust)
Webkit browsers aren't a problem with those as they are naturally thinner and inherit the coloring already.

If leaving the track gray would be better than transparent

My 2c is to eliminate the track, but I'll leave that call to @matthewbirtch

@kelderek, Matt and I chatted about this, we're good to move ahead with the rest of the reviews
Adding @jgilliam17 (QA) and @AshishDhama (front end dev) to help continue the review process

Excellent!  Thanks @esethna and @matthewbirtch !  I will be on the lookout in case any additional tweaks need to be done!  Also, the release note I put forth in the beginning is still accurate, but very incomplete now.  Should I revamp that or is it the kind of change that realistically gets rolled up with other small changes into a generic "UX improvements" note?

@kelderek feel free to edit the release note as needed to keep it accurate :)

Updated the release notes and screenshots on the first post

/e2e-test

Successfully triggered e2e testing!
https://git.internal.mattermost.com/qa/cypress-ui-automation/-/pipelines/257645

Thanks @kelderek
Tested, looks good to merge - pending e2es, I'll post report here shortly
Verified scroll bar border in desktop and browsers.

@jgilliam17 or others, can you help merge if there's nothing blocking and reviews complete?

Thanks @kelderek for your great work here!!

Thank you @esethna for the encouragement and guidance with this process!

Hi @kelderek
You were selected as one of our Top Contributors for Hacktoberfest!
Please fill out this form to select your swag as thanks!
Thank you for all you do and for making Mattermost even better!

Thank you! The form has been filled out.
Jan 5, 2023 13:46:25 Jordana Fung @.***>:

Hi @kelderek[https://github.com/kelderek]
You were selected as one of our Top Contributors for Hacktoberfest!
Please fill out this form[https://docs.google.com/forms/d/11pLB3pF1CmOslYqHr7c7bxFWU6QAEAJuiaKgHD1vJtg] to select your swag as thanks!
Thank you for all you do and for making Mattermost even better!
—
Reply to this email directly, view it on GitHub[https://github.com/mattermost/mattermost-webapp/pull/11292#issuecomment-1372599454], or unsubscribe[https://github.com/notifications/unsubscribe-auth/ABOXUFOTLROKTWLIZPZLM43WQ4JFRANCNFSM6AAAAAAQ65LHJQ].
You are receiving this because you were mentioned.[Tracking image][https://github.com/notifications/beacon/ABOXUFLB2RH7TA3XL4V35ZDWQ4JFRA5CNFSM6AAAAAAQ65LHJSWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTSR2A2J4.gif]


Add MSRV check to CI

If we can automate https://github.com/prql/prql/pull/1011, that would be great.
I didn't immediately see any GitHub actions in https://github.com/foresterre/cargo-msrv, though it wouldn't be an arduous task to write one.
(Note that this is different from https://github.com/taiki-e/cargo-minimal-versions, which checks that the minimal versions of specified dependencies are compatible. That would be good to have too...)

Closed by #1566


CSS being carried away from a layout into other pages that don't use that layout

Environment

Operating System: Windows_NT
Node Version:     v18.12.1
Nuxt Version:     3.12.4
CLI Version:      3.12.0
Nitro Version:    2.9.7
Package Manager<EMAIL_ADDRESS>Builder:          -
User Config:      build, site, app, colorMode, compatibilityDate, devtools, modules, serverMiddleware, auth
Runtime Modules<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Build Modules:    -

Reproduction
I am using a layout that is specifically for the login page of my app. This is because I want the page to take up the entire screen (remove the navbar etc.).
An issue im having is that the CSS that im using to remove the body margin and whatever is being carried back out of the login screen and into the rest of the app
Here's the CSS in the layout:
<style>
body, html {
  margin: 0;
  padding: 0;
  height: 100%;
}
.login-layout {
  height: 100%;
  min-height: 100%;
}
.app-wrapper {
  height: 100%;
  min-height: 100%;
  padding: 0px;
  min-width: 100%;
}
#__nuxt {
  height: 100%;
  min-height: 100%;
}
</style>

Describe the bug
.app-wrapper is applied to the body etc. so that when I go to the login screen it just applies those styles.
When I go back to / for example, the .app-wrapper style is still applied to the page, and so the body loses its margin etc. that it had originally.
How can I fix this?
Additional context
No response
Logs
No response

Are you using just <style> or are you using <style scoped>? Because if you are using just <style>, that CSS will be included in all pages. Read vue documentation for more information about it.


Configure Simon says player abstraction to use new micro-motors.

#311 is nearly complete, and now we need code to be able to control it.
I don't reccommend using the motor.py abstraction class right now, because it doesn't work in its current state, and there's also a large difference that it assumes that we're not using here. Mainly, no PWM is required. We just need the motor moving forward, backward, or stopped. Speed is irrelevant.
The basic operation is simple.
When AIN1 is HIGH, so is A1OUT is also HIGH (but with motor supply instead of logic supply).

Working on this as of now!

This will not be an issue due to the new motor cape.


Add key button need not be hollow. It's breaking consistency.

UI being fixed as part of https://github.com/bithyve/bitcoin-keeper/issues/5232

New Design done in the above issue Mentioned by Ben

Closing as it is now part of #5232


Bluetooth: Reduce severity of unavoidable warnings

Reduces the severity of warnings that happen from normal behavior, or
can't be prevented by the user:

"No ID address" in hci_core.c: Reduced to an informational warning, as
this will always output with the expected usage. This isn't useful
information for 99.9% of users, and pollutes the output of all samples
using the module.
"Composition page %u not available" in cfg_srv.c: According to the
Mesh Profile Specification section <IP_ADDRESS>.2, the client is expected
to send page=0xff. Reduced to a debug message.
"Connectable advertising deferred" in proxy.c: Gets logged every 10
seconds when in a Mesh Proxy connection. This is not useful
information unless the user is debugging the proxy module. Reduced to
a debug message.

Signed-off-by: Trond Einar Snekvik<EMAIL_ADDRESS>

Nice! thanks!


Gigasecond: Test should require 'time' rather than the solution

I had been very careful about leaving the requirements of Time in the test file for Gigasecond, and then in PR #457 I let it slip.
Requiring time in the test file, rather than the solution lets the solution be written as a more flexible thing.
It allows for a little more exploration.
There are reasons to not change this, as it provides some fodder for discussing this.  It let's the talk about being able to modify tests and submitting them for exploration happen.

https://github.com/exercism/xruby/blob/master/exercises/gigasecond/gigasecond_test.rb
If Time is referenced in the test file the require should be in the test file.
I argue that having Time in the test file is the problem that should be solved.

http://exercism.io/exercises/ruby/gigasecond/readme
The Readme is not particularly helpful concerning inputs/outputs.
The canonical-data seems to suggest that some kind of time object should be returned.

Yes, the canonical drives the tests... the intent may be a little harder to discern.  However, as is in my feedback for Gigasecond exercises commonly, the name of the object itself suggests that the units are "seconds", as a commonality.  So providing a number of seconds, perhaps even 12 or 12.75 and adding a gigasecond to it should reasonably result in 1_000_000_012.75 for the latter.
And I fully agree that the require 'time' should be in the test file, it is used as a convenience to the test.
Perhaps to help bring this out (at the expense of losing the person-to-person discussion about it), we could add a test that does exactly as described in the example above, in this message.

Turns out that time is required in the cases file... but not written to the test file.

Not a large enough concern.