Skip to content

Make initialize methods for each product idempotent #5272

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Aug 13, 2021
Merged

Conversation

hsubox76
Copy link
Contributor

@hsubox76 hsubox76 commented Aug 10, 2021

Making all initialize functions idempotent for each product (internal link: go/firebase-idempotent-js-service).

Products affected

  • analytics
  • app-check
  • auth
  • firestore
  • performance

Since initial options aren't always stored on the service instance, and even when they are, they can sometimes be changed later on in runtime, I decided to add them to the provider, for easy comparison next time the user tries to initialize the product.

@changeset-bot
Copy link

changeset-bot bot commented Aug 10, 2021

🦋 Changeset detected

Latest commit: 9c4aca6

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 14 packages
Name Type
@firebase/component Patch
@firebase/analytics Patch
@firebase/app-check Patch
@firebase/app Patch
@firebase/database Patch
@firebase/firestore Patch
@firebase/functions Patch
@firebase/installations Patch
@firebase/messaging Patch
@firebase/performance Patch
@firebase/remote-config Patch
@firebase/rules-unit-testing Patch
@firebase/storage Patch
firebase Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions
Copy link
Contributor

github-actions bot commented Aug 10, 2021

Changeset File Check ⚠️

  • Warning: This PR modifies files in the following packages but they have not been included in the changeset file:

    • @firebase/analytics-exp
    • @firebase/app-check-exp
    • @firebase/auth-exp
    • @firebase/performance-exp
    • @firebase/firestore

    Make sure this was intentional.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Aug 10, 2021

Binary Size Report

Affected SDKs

  • @firebase/component

    Type Base (749f5a2) Head (37a6c86) Diff
    browser 8.33 kB 8.61 kB +280 B (+3.4%)
    esm2017 6.32 kB 6.54 kB +216 B (+3.4%)
    main 8.67 kB 8.95 kB +280 B (+3.2%)
    module 8.33 kB 8.61 kB +280 B (+3.4%)
  • @firebase/firestore-exp

    Type Base (749f5a2) Head (37a6c86) Diff
    browser 224 kB 225 kB +325 B (+0.1%)
    main 510 kB 511 kB +364 B (+0.1%)
    module 224 kB 225 kB +325 B (+0.1%)
    react-native 224 kB 225 kB +298 B (+0.1%)
  • firebase

    Type Base (749f5a2) Head (37a6c86) Diff
    firebase-app.js 21.9 kB 22.1 kB +184 B (+0.8%)
    firebase-database.js 187 kB 188 kB +184 B (+0.1%)
    firebase-performance-standalone.es2017.js 73.4 kB 73.5 kB +159 B (+0.2%)
    firebase-performance-standalone.js 49.8 kB 49.9 kB +184 B (+0.4%)
    firebase.js 895 kB 895 kB +186 B (+0.0%)

Test Logs

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Aug 10, 2021

Size Analysis Report

Affected Products

  • @firebase/analytics-exp

    • getAnalytics

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.58 kB
      9.76 kB
      +177 B (+1.8%)
      size-with-ext-deps
      28.4 kB
      28.9 kB
      +509 B (+1.8%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      23 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getAnalytics
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      23 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getAnalytics
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

      External Dependency Table

      ModuleBase (749f5a2)Head (37a6c86)Diff
      @firebase/util

      ErrorFactory
      FirebaseError
      areCookiesEnabled
      calculateBackoffMillis
      getModularInstance
      isBrowserExtension
      isIndexedDBAvailable
      validateIndexedDBOpenable
      

      ErrorFactory
      FirebaseError
      areCookiesEnabled
      calculateBackoffMillis
      deepEqual
      getModularInstance
      isBrowserExtension
      isIndexedDBAvailable
      validateIndexedDBOpenable
      

      + deepEqual

    • initializeAnalytics

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.47 kB
      9.65 kB
      +177 B (+1.9%)
      size-with-ext-deps
      28.2 kB
      28.7 kB
      +509 B (+1.8%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      22 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      22 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

      External Dependency Table

      ModuleBase (749f5a2)Head (37a6c86)Diff
      @firebase/util

      ErrorFactory
      FirebaseError
      areCookiesEnabled
      calculateBackoffMillis
      getModularInstance
      isBrowserExtension
      isIndexedDBAvailable
      validateIndexedDBOpenable
      

      ErrorFactory
      FirebaseError
      areCookiesEnabled
      calculateBackoffMillis
      deepEqual
      getModularInstance
      isBrowserExtension
      isIndexedDBAvailable
      validateIndexedDBOpenable
      

      + deepEqual

    • isSupported

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.45 kB
      9.54 kB
      +96 B (+1.0%)
      size-with-ext-deps
      28.2 kB
      28.3 kB
      +96 B (+0.3%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      22 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      isSupported
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      22 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      isSupported
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

    • logEvent

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.30 kB
      9.40 kB
      +96 B (+1.0%)
      size-with-ext-deps
      28.0 kB
      28.1 kB
      +96 B (+0.3%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      21 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      21 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

    • setAnalyticsCollectionEnabled

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.47 kB
      9.56 kB
      +96 B (+1.0%)
      size-with-ext-deps
      28.2 kB
      28.3 kB
      +96 B (+0.3%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      23 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setAnalyticsCollectionEnabled
      setAnalyticsCollectionEnabled$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      23 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setAnalyticsCollectionEnabled
      setAnalyticsCollectionEnabled$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

    • setCurrentScreen

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.55 kB
      9.65 kB
      +96 B (+1.0%)
      size-with-ext-deps
      28.3 kB
      28.4 kB
      +96 B (+0.3%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      23 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setCurrentScreen
      setCurrentScreen$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      23 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setCurrentScreen
      setCurrentScreen$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

    • setUserId

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.54 kB
      9.63 kB
      +96 B (+1.0%)
      size-with-ext-deps
      28.3 kB
      28.4 kB
      +96 B (+0.3%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      23 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserId
      setUserId$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      23 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserId
      setUserId$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

    • setUserProperties

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.61 kB
      9.71 kB
      +96 B (+1.0%)
      size-with-ext-deps
      28.3 kB
      28.4 kB
      +96 B (+0.3%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      23 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      23 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      setUserProperties
      setUserProperties$1
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

    • settings

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.43 kB
      9.53 kB
      +96 B (+1.0%)
      size-with-ext-deps
      28.2 kB
      28.3 kB
      +96 B (+0.3%)

      Dependency Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      functions

      22 dependencies

      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      initializeAnalytics$1
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      settings
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      22 dependencies

      _initializeAnalytics
      attemptFetchDynamicConfigWithRetry
      factory
      fetchDynamicConfig
      fetchDynamicConfigWithRetry
      findGtagScriptOnPage
      getHeaders
      getOrCreateDataLayer
      gtagOnConfig
      gtagOnEvent
      insertScriptTag
      isRetriableError
      logEvent
      logEvent$1
      promiseAllSettled
      registerAnalytics
      setAbortableTimeout
      settings
      validateIndexedDB
      warnOnBrowserContextMismatch
      wrapGtag
      wrapOrCreateGtag
      

      + _initializeAnalytics
      - initializeAnalytics$1

  • @firebase/app-check-exp

    • CustomProvider

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.83 kB
      10.1 kB
      +289 B (+2.9%)
      size-with-ext-deps
      19.7 kB
      20.0 kB
      +289 B (+1.5%)
    • ReCaptchaV3Provider

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      11.1 kB
      11.3 kB
      +221 B (+2.0%)
      size-with-ext-deps
      20.6 kB
      20.8 kB
      +221 B (+1.1%)
    • getToken

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.54 kB
      9.68 kB
      +137 B (+1.4%)
      size-with-ext-deps
      18.9 kB
      19.1 kB
      +137 B (+0.7%)
    • initializeAppCheck

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.96 kB
      10.3 kB
      +294 B (+3.0%)
      size-with-ext-deps
      19.5 kB
      19.8 kB
      +294 B (+1.5%)
    • onTokenChanged

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.64 kB
      9.77 kB
      +137 B (+1.4%)
      size-with-ext-deps
      19.0 kB
      19.2 kB
      +137 B (+0.7%)
    • setTokenAutoRefreshEnabled

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      9.67 kB
      9.81 kB
      +137 B (+1.4%)
      size-with-ext-deps
      19.1 kB
      19.2 kB
      +137 B (+0.7%)
  • @firebase/app-exp

    • initializeApp

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size-with-ext-deps
      11.9 kB
      12.1 kB
      +149 B (+1.3%)
  • @firebase/auth-exp

    • getAuth

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      61.1 kB
      61.2 kB
      +90 B (+0.1%)
      size-with-ext-deps
      73.4 kB
      73.8 kB
      +421 B (+0.6%)

      External Dependency Table

      ModuleBase (749f5a2)Head (37a6c86)Diff
      @firebase/util

      12 dependencies

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      getModularInstance
      getUA
      isBrowserExtension
      isEmpty
      isIE
      isMobileCordova
      isReactNative
      querystring
      

      13 dependencies

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      deepEqual
      getModularInstance
      getUA
      isBrowserExtension
      isEmpty
      isIE
      isMobileCordova
      isReactNative
      querystring
      

      + deepEqual

    • initializeAuth

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      29.8 kB
      29.9 kB
      +92 B (+0.3%)
      size-with-ext-deps
      41.7 kB
      42.1 kB
      +421 B (+1.0%)

      External Dependency Table

      ModuleBase (749f5a2)Head (37a6c86)Diff
      @firebase/util

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      getModularInstance
      getUA
      isBrowserExtension
      isMobileCordova
      isReactNative
      querystring
      

      11 dependencies

      ErrorFactory
      FirebaseError
      base64Decode
      createSubscribe
      deepEqual
      getModularInstance
      getUA
      isBrowserExtension
      isMobileCordova
      isReactNative
      querystring
      

      + deepEqual

    • debugErrorMap

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      40.5 kB
      40.7 kB
      +192 B (+0.5%)
      size-with-ext-deps
      52.4 kB
      52.6 kB
      +192 B (+0.4%)
  • @firebase/performance-exp

    • getPerformance

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      17.4 kB
      17.6 kB
      +214 B (+1.2%)
      size-with-ext-deps
      35.9 kB
      36.1 kB
      +214 B (+0.6%)
    • initializePerformance

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      17.5 kB
      17.8 kB
      +329 B (+1.9%)
      size-with-ext-deps
      35.9 kB
      36.5 kB
      +660 B (+1.8%)

      External Dependency Table

      ModuleBase (749f5a2)Head (37a6c86)Diff
      @firebase/util

      ErrorFactory
      getModularInstance
      isIndexedDBAvailable
      validateIndexedDBOpenable
      

      ErrorFactory
      deepEqual
      getModularInstance
      isIndexedDBAvailable
      validateIndexedDBOpenable
      

      + deepEqual

    • trace

      Size Table

      TypeBase (749f5a2)Head (37a6c86)Diff
      size
      17.3 kB
      17.5 kB
      +214 B (+1.2%)
      size-with-ext-deps
      35.7 kB
      36.0 kB
      +214 B (+0.6%)

@Feiyang1 Feiyang1 assigned hsubox76 and unassigned Feiyang1 Aug 11, 2021
Copy link
Member

@Feiyang1 Feiyang1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM pending one comment

@hsubox76 hsubox76 changed the title Make initializeAppCheck and initializeAnalytics idempotent Make initialize methods for each product idempotent Aug 12, 2021
@hsubox76 hsubox76 assigned Feiyang1 and unassigned hsubox76 Aug 12, 2021
@Feiyang1 Feiyang1 assigned hsubox76 and unassigned Feiyang1 Aug 12, 2021
@Feiyang1 Feiyang1 added the v9 label Aug 12, 2021
@Feiyang1 Feiyang1 added this to the v9 GA milestone Aug 12, 2021
@hsubox76 hsubox76 merged commit bb6b5ab into master Aug 13, 2021
@hsubox76 hsubox76 deleted the ch-idempotent branch August 13, 2021 17:43
@google-oss-bot google-oss-bot mentioned this pull request Aug 17, 2021
@firebase firebase locked and limited conversation to collaborators Sep 13, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants