wsbrunson/Quiz-Simply-React 12
The Simple JavaScript Quiz implemented in React
AngularJS thumbnail service to generate blob or base64 data as well as directive to display an image as thumbnail in canvas
wsbrunson/awesome-newsletters 0
A list of amazing Newsletters
wsbrunson/employee-directory 0
Find the awesome people you work with.
opinonated eslint configs
Pull request review commentpaypal/paypal-smart-payment-buttons
feat(hcf): add analytics for vault setup token flows
export const getCreateVaultSetupToken = ({ paymentSource: PaymentSource, |}): CreateVaultSetupToken => { const data = buildXCreateVaultSetupTokenData({ paymentSource });-+ const startTime = Date.now(); return memoize(() => { if (!createVaultSetupToken) { throw new Error(`createVaultSetupToken undefined`); } - return createVaultSetupToken(data).then((vaultSetupToken) => {- if (!vaultSetupToken || typeof vaultSetupToken !== "string") {- throw new Error(- `Expected a vault setup token to be returned from createVaultSetupToken`- );- }- return vaultSetupToken;- });+ return createVaultSetupToken(data)+ .then((vaultSetupToken) => {+ if (!vaultSetupToken || typeof vaultSetupToken !== "string") {+ const errString = "Expected a vault setup token to be returned from createVaultSetupToken"+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ event: "error",+ dimensions: {+ errorName: 'no_setup_token',+ }+ })+ getLogger()+ .error('create_vault_setup_token', { err: errString })+ .track({+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.ERROR_CODE]: 'smart_buttons_create_vault_setup_token',+ [FPTI_KEY.ERROR_DESC]: errString+ })+ throw new Error(errString);+ }+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ event: "success",+ dimensions: {+ errorName: "no_vault_setup_token"+ }+ });+ getLogger()+ .addTrackingBuilder(() => {+ return {+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.TRANSITION]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,+ [FPTI_KEY.EVENT_NAME]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,+ [FPTI_KEY.CONTEXT_TYPE]: FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN,+ [FPTI_KEY.CONTEXT_ID]: vaultSetupToken,+ [FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN]: vaultSetupToken,+ [FPTI_KEY.RESPONSE_DURATION]: (Date.now() - startTime).toString(),+ client_time: getClientsideTimestamp(),+ };+ })
.addTrackingBuilder(() => {
return {
[FPTI_KEY.CONTEXT_TYPE]: FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN,
[FPTI_KEY.CONTEXT_ID]: vaultSetupToken,
};
})
.track({
[FPTI_KEY.STATE]: FPTI_STATE.BUTTON,
[FPTI_KEY.TRANSITION]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,
[FPTI_KEY.EVENT_NAME]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,
[FPTI_KEY.RESPONSE_DURATION]: (Date.now() - startTime).toString(),
client_time: getClientsideTimestamp(),
});
addTrackingBuilder
will add tags for every subsequent call of track
, but not actually fire a tracking event.
We add contextType
and contextID
to the tracking builder so that any event that fires after this one is properly marked as in the context of vault without purchase with the vault setup token
comment created time in 2 days
delete branch paypal/paypal-smart-payment-buttons
delete branch : revert-681-change-default-amount
delete time in 5 days
PR closed paypal/paypal-smart-payment-buttons
Reverts paypal/paypal-smart-payment-buttons#681
We can close this if we have a successful deploy today
pr closed time in 5 days
PR opened paypal/paypal-smart-payment-buttons
Reverts paypal/paypal-smart-payment-buttons#681
We can close this if we have a successful deploy today
pr created time in 5 days
create barnchpaypal/paypal-smart-payment-buttons
branch : revert-681-change-default-amount
created branch time in 5 days
Pull request review commentpaypal/paypal-smart-payment-buttons
add logs for vault setup token received
export const getCreateVaultSetupToken = ({ paymentSource: PaymentSource, |}): CreateVaultSetupToken => { const data = buildXCreateVaultSetupTokenData({ paymentSource });-+ const startTime = Date.now(); return memoize(() => { if (!createVaultSetupToken) { throw new Error(`createVaultSetupToken undefined`); } - return createVaultSetupToken(data).then((vaultSetupToken) => {- if (!vaultSetupToken || typeof vaultSetupToken !== "string") {- throw new Error(- `Expected a vault setup token to be returned from createVaultSetupToken`- );- }- return vaultSetupToken;- });+ return createVaultSetupToken(data)+ .then((vaultSetupToken) => {+ if (!vaultSetupToken || typeof vaultSetupToken !== "string") {+ const errString = "Expected a vault setup token to be returned from createVaultSetupToken"+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ event: "error",+ dimensions: {+ errorName: 'no_setup_token',+ }+ })+ getLogger()+ .error('create_vault_setup_token', { err: errString })+ .track({+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.ERROR_CODE]: 'smart_buttons_create_vault_setup_token',+ [FPTI_KEY.ERROR_DESC]: errString+ })+ throw new Error(errString);+ }+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ event: "success",+ });+ getLogger()+ .addTrackingBuilder(() => {+ return {+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.TRANSITION]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,+ [FPTI_KEY.EVENT_NAME]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,+ [FPTI_KEY.CONTEXT_TYPE]: FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN,+ [FPTI_KEY.CONTEXT_ID]: vaultSetupToken,+ [FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN]: vaultSetupToken,+ [FPTI_KEY.RESPONSE_DURATION]: (Date.now() - startTime).toString(),+ client_time: getClientsideTimestamp(),+ };+ }).flush()
Since this is a success, we can rely on a flush further in the flow
})
comment created time in 6 days
Pull request review commentpaypal/paypal-smart-payment-buttons
add logs for vault setup token received
export const getCreateVaultSetupToken = ({ paymentSource: PaymentSource, |}): CreateVaultSetupToken => { const data = buildXCreateVaultSetupTokenData({ paymentSource });-+ const startTime = Date.now(); return memoize(() => { if (!createVaultSetupToken) { throw new Error(`createVaultSetupToken undefined`); } - return createVaultSetupToken(data).then((vaultSetupToken) => {- if (!vaultSetupToken || typeof vaultSetupToken !== "string") {- throw new Error(- `Expected a vault setup token to be returned from createVaultSetupToken`- );- }- return vaultSetupToken;- });+ return createVaultSetupToken(data)+ .then((vaultSetupToken) => {+ if (!vaultSetupToken || typeof vaultSetupToken !== "string") {+ const errString = "Expected a vault setup token to be returned from createVaultSetupToken"+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ event: "error",+ dimensions: {+ errorName: 'no_setup_token',+ }+ })+ getLogger()+ .error('create_vault_setup_token', { err: errString })+ .track({+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.ERROR_CODE]: 'smart_buttons_create_vault_setup_token',+ [FPTI_KEY.ERROR_DESC]: errString+ })+ throw new Error(errString);+ }+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ event: "success",+ });+ getLogger()+ .addTrackingBuilder(() => {+ return {+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.TRANSITION]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,+ [FPTI_KEY.EVENT_NAME]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,+ [FPTI_KEY.CONTEXT_TYPE]: FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN,+ [FPTI_KEY.CONTEXT_ID]: vaultSetupToken,+ [FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN]: vaultSetupToken,+ [FPTI_KEY.RESPONSE_DURATION]: (Date.now() - startTime).toString(),+ client_time: getClientsideTimestamp(),+ };+ }).flush()++ return vaultSetupToken;+ })+ .catch((err) => {+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ dimensions: {+ errorName: 'generic',+ }+ })++ getLogger()+ .error('create_vault_setup_token_error', { err: stringifyErrorMessage(err) })+ .track({+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.ERROR_CODE]: 'smart_buttons_create_vault_setup_token_error',+ [FPTI_KEY.ERROR_DESC]: stringifyErrorMessage(err)+ });
})
.flush();
comment created time in 6 days
Pull request review commentpaypal/paypal-smart-payment-buttons
add logs for vault setup token received
export const getCreateVaultSetupToken = ({ paymentSource: PaymentSource, |}): CreateVaultSetupToken => { const data = buildXCreateVaultSetupTokenData({ paymentSource });-+ const startTime = Date.now(); return memoize(() => { if (!createVaultSetupToken) { throw new Error(`createVaultSetupToken undefined`); } - return createVaultSetupToken(data).then((vaultSetupToken) => {- if (!vaultSetupToken || typeof vaultSetupToken !== "string") {- throw new Error(- `Expected a vault setup token to be returned from createVaultSetupToken`- );- }- return vaultSetupToken;- });+ return createVaultSetupToken(data)+ .then((vaultSetupToken) => {+ if (!vaultSetupToken || typeof vaultSetupToken !== "string") {+ const errString = "Expected a vault setup token to be returned from createVaultSetupToken"+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ event: "error",+ dimensions: {+ errorName: 'no_setup_token',+ }+ })+ getLogger()+ .error('create_vault_setup_token', { err: errString })+ .track({+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.ERROR_CODE]: 'smart_buttons_create_vault_setup_token',+ [FPTI_KEY.ERROR_DESC]: errString+ })+ throw new Error(errString);+ }+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ event: "success",+ });+ getLogger()+ .addTrackingBuilder(() => {+ return {+ [FPTI_KEY.STATE]: FPTI_STATE.BUTTON,+ [FPTI_KEY.TRANSITION]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,+ [FPTI_KEY.EVENT_NAME]: FPTI_TRANSITION.RECEIVE_VAULT_SETUP_TOKEN,+ [FPTI_KEY.CONTEXT_TYPE]: FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN,+ [FPTI_KEY.CONTEXT_ID]: vaultSetupToken,+ [FPTI_CONTEXT_TYPE.VAULT_SETUP_TOKEN]: vaultSetupToken,+ [FPTI_KEY.RESPONSE_DURATION]: (Date.now() - startTime).toString(),+ client_time: getClientsideTimestamp(),+ };+ }).flush()++ return vaultSetupToken;+ })+ .catch((err) => {+ sendCountMetric({+ name: "pp.app.paypal_sdk.buttons.create_vault_setup_token.count",+ dimensions: {
event: "error",
dimensions: {
comment created time in 6 days
Pull request review commentpaypal/paypal-smart-payment-buttons
add logs for vault setup token received
export const getCreateVaultSetupToken = ({ paymentSource: PaymentSource, |}): CreateVaultSetupToken => { const data = buildXCreateVaultSetupTokenData({ paymentSource });-+ const startTime = Date.now(); return memoize(() => { if (!createVaultSetupToken) { throw new Error(`createVaultSetupToken undefined`); } return createVaultSetupToken(data).then((vaultSetupToken) => {
since we aren't logging an error in createOrder
, I would add a catch statement to this chain:
return createVaultSetupToken(data)
.then((vaultSetupToken) => ...)
.catch(error => {
// log/metric for the error
// throw error so that the `createOrder` chain still works as it does today
throw error
})
comment created time in 6 days
Pull request review commentpaypal/paypal-sdk-client
Decode the sdk meta if url encoded meta is passed
export function setupLogger() { // https://www.paypal.com/us/gifts/ const isLoadedInFrame = isPayPalDomain() && window.xprops; const sdkLoadTime =- typeof loadTime === "number" ? loadTime.toString() : undefined;+ typeof loadTime === "number" ? Number(loadTime) : undefined;
isn't loadTime already a number in this case? since typeof loadtime === "numer"
is true?
comment created time in 9 days
delete branch paypal/paypal-smart-payment-buttons
delete branch : change-default-amount
delete time in 12 days
push eventpaypal/paypal-smart-payment-buttons
commit sha b27bb0855f6c5c7350e79e246d0aafbbabc8b767
change default amount to remove decimals (#681)
push time in 12 days
PR merged paypal/paypal-smart-payment-buttons
https://paypal.atlassian.net/browse/LI-18516
0.00
is not a valid amount for currencies like JPY which don't support decimals. Backend team has assured us this should still work for decimal currencies
pr closed time in 12 days
PR opened paypal/paypal-smart-payment-buttons
https://paypal.atlassian.net/browse/LI-18516
0.00
is not a valid amount for currencies like JPY which don't support decimals. Backend team has assured us this should still work for decimal currencies
pr created time in 12 days
create barnchpaypal/paypal-smart-payment-buttons
branch : change-default-amount
created branch time in 12 days