-
Notifications
You must be signed in to change notification settings - Fork 601
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
Migrate common from SharedPreferences to DataStore #6801
base: main
Are you sure you want to change the base?
Conversation
Javadoc Changes:--- /home/runner/diff/original/firebase-kotlindoc/android/client/firebase-common/_toc.yaml 2025-04-10 21:07:58.952608597 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/client/firebase-common/_toc.yaml 2025-04-10 21:04:43.087597796 +0000
@@ -27,6 +27,18 @@
- title: "FirebaseTooManyRequestsException"
path: "/docs/reference/android/com/google/firebase/FirebaseTooManyRequestsException.html"
+- title: "firebase.datastore"
+ path: "/docs/reference/android/com/google/firebase/datastore/package-summary.html"
+
+ section:
+ - title: "Classes"
+
+ section:
+ - title: "DataStorage"
+ path: "/docs/reference/android/com/google/firebase/datastore/DataStorage.html"
+ - title: "DataStoreKt"
+ path: "/docs/reference/android/com/google/firebase/datastore/DataStoreKt.html"
+
- title: "firebase.ktx"
status: deprecated
path: "/docs/reference/android/com/google/firebase/ktx/package-summary.html" --- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/datastore/DataStorage.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/datastore/DataStorage.html 2025-04-10 21:04:43.093597765 +0000
@@ -0,0 +1,409 @@
+<html devsite="true">
+ <head>
+ <title>DataStorage</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="metadata-info-block"></div>
+ <h1>DataStorage</h1>
+ <p>
+ <pre>public final class <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html">DataStorage</a></pre>
+ </p>
+ <hr>
+ <p>Wrapper around <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/core/DataStore.html">DataStore</a></code> for easier migration from <code>SharedPreferences</code> in Java code.</p>
+ <p>Automatically migrates data from any <code>SharedPreferences</code> that share the same context and name.</p>
+ <p>There should only ever be <em>one</em> instance of this class per context and name variant.</p>
+ <blockquote>
+ <p>Do <b>NOT</b> use this <em>unless</em> you're bridging Java code. If you're writing new code, or your code is in Kotlin, then you should create your own singleton that uses <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/core/DataStore.html">DataStore</a></code> directly.</p>
+ </blockquote>
+ <p>Example:</p>
+ <pre class="prettyprint">DataStorage heartBeatStorage = new DataStorage(applicationContext, "FirebaseHeartBeat");</pre>
+ <h2>Summary</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public fields</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#context()">context</a></code></div>
+ <p>The <code><a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a></code> that this data will be saved under.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#name()">name</a></code></div>
+ <p>What the storage file should be named.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public constructors</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#DataStorage(android.content.Context,kotlin.String)">DataStorage</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a> context, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> name)</code></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public methods</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>final boolean</code></td>
+ <td>
+ <div><code><T extends <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#contains(androidx.datastore.preferences.core.Preferences.Key)">contains</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key)</code></div>
+ <p>Checks if a key is present in the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> transform)</code></div>
+ <p>Transactionally edit data in the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> ?>, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>></code></td>
+ <td>
+ <div><code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#getAllSync()">getAllSync</a>()</code></div>
+ <p>Gets all data in the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T</code></td>
+ <td>
+ <div><code><T extends <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#getSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getSync</a>(<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key,<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T defaultValue<br>)</code></div>
+ <p>Get data from the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code></td>
+ <td>
+ <div><code><T extends <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#putSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">putSync</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T value)</code></div>
+ <p>Sets and saves data in the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="list">
+ <h2>Public fields</h2>
+ <div class="api-item"><a name="getContext()"></a><a name="setContext()"></a><a name="getContext--"></a><a name="setContext--"></a>
+ <h3 class="api-name" id="context()">context</h3>
+ <pre class="api-signature no-pretty-print">public final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#context()">context</a></pre>
+ <p>The <code><a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a></code> that this data will be saved under.</p>
+ </div>
+ <div class="api-item"><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
+ <h3 class="api-name" id="name()">name</h3>
+ <pre class="api-signature no-pretty-print">public final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#name()">name</a></pre>
+ <p>What the storage file should be named.</p>
+ </div>
+ </div>
+ <div class="list">
+ <h2>Public constructors</h2>
+ <div class="api-item"><a name="DataStorage(android.content.Context, kotlin.String)"></a><a name="DataStorage-android.content.Context-kotlin.String-"></a><a name="datastorage"></a>
+ <h3 class="api-name" id="DataStorage(android.content.Context,kotlin.String)">DataStorage</h3>
+ <pre class="api-signature no-pretty-print">public <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#DataStorage(android.content.Context,kotlin.String)">DataStorage</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a> context, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/String.html">String</a> name)</pre>
+ </div>
+ </div>
+ <div class="list">
+ <h2>Public methods</h2>
+ <div class="api-item"><a name="contains-androidx.datastore.preferences.core.Preferences.Key-"></a><a name="contains"></a>
+ <h3 class="api-name" id="contains(androidx.datastore.preferences.core.Preferences.Key)">contains</h3>
+ <pre class="api-signature no-pretty-print">public final boolean <T extends <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#contains(androidx.datastore.preferences.core.Preferences.Key)">contains</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key)</pre>
+ <p>Checks if a key is present in the datastore <em>synchronously</em>.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">Preferences.Key<Long> fireCountKey = PreferencesKeys.longKey("fire-count");<br>assert !dataStore.contains(fireCountKey);<br><br>dataStore.putSync(fireCountKey, 102L);<br>assert dataStore.contains(fireCountKey);</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key</code></td>
+ <td>
+ <p>The typed key of the entry to find.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="editSync-kotlin.Function1-"></a><a name="editsync"></a>
+ <h3 class="api-name" id="editSync(kotlin.Function1)">editSync</h3>
+ <pre class="api-signature no-pretty-print">public final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> transform)</pre>
+ <p>Transactionally edit data in the datastore <em>synchronously</em>.</p>
+ <p>Edits made within the <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">transform</a></code> callback will be saved (committed) all at once once the <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">transform</a></code> block exits.</p>
+ <p>Because of the blocking nature of this function, you should <em>never</em> call <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a></code> within an already running <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">transform</a></code> block. Since this can cause a deadlock, <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a></code> will instead throw an exception if it's caught.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">dataStore.editSync((pref) -> {<br> Long heartBeatCount = pref.get(HEART_BEAT_COUNT_TAG);<br> if (heartBeatCount == null || heartBeatCount 30) {<br> heartBeatCount = 0L;<br> }<br> pref.set(HEART_BEAT_COUNT_TAG, heartBeatCount);<br> pref.set(LAST_STORED_DATE, "1970-0-1");<br><br> return null;<br>});</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> Function1<@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>> transform</code></td>
+ <td>
+ <p>A callback to invoke with the <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a></code> object.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code></td>
+ <td>
+ <p>The <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code> object that the data was saved under.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Throws</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-illegal-state-exception/index.html">kotlin.IllegalStateException</a> kotlin.IllegalStateException</code></td>
+ <td>
+ <p>If you attempt to call <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a></code> within another <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">transform</a></code> block.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">See also</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/android/com/google/firebase/datastore/package-summary.html#(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</a></code></td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="getAllSync--"></a><a name="getallsync"></a>
+ <h3 class="api-name" id="getAllSync()">getAllSync</h3>
+ <pre class="api-signature no-pretty-print">public final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> ?>, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#getAllSync()">getAllSync</a>()</pre>
+ <p>Gets all data in the datastore <em>synchronously</em>.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">ArrayList<String> allDates = new ArrayList<>();<br><br>for (Map.Entry<Preferences.Key<?>, Object> entry : dataStore.getAllSync().entrySet()) {<br> if (entry.getValue() instanceof Set) {<br> Set<String> dates = new HashSet<>((Set<String>) entry.getValue());<br> if (!dates.isEmpty()) {<br> allDates.add(new ArrayList<>(dates));<br> }<br> }<br>}</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/util/Map.html">Map</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> ?>, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>></code></td>
+ <td>
+ <p>An <em>immutable</em> map of data currently present in the datastore.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="getSync(androidx.datastore.preferences.core.Preferences.Key, kotlin.Any)"></a><a name="getSync-androidx.datastore.preferences.core.Preferences.Key-kotlin.Any-"></a><a name="getsync"></a>
+ <h3 class="api-name" id="getSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getSync</h3>
+ <pre class="api-signature no-pretty-print">public final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T <T extends <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#getSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getSync</a>(<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key,<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T defaultValue<br>)</pre>
+ <p>Get data from the datastore <em>synchronously</em>.</p>
+ <p>Note that if the key is <em>not</em> in the datastore, while the <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#getSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">defaultValue</a></code> will be returned instead- it will <b>not</b> be saved to the datastore; you'll have to manually do that.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">Preferences.Key<Long> fireCountKey = PreferencesKeys.longKey("fire-count");<br>assert dataStore.get(fireCountKey, 0L) == 0L;<br><br>dataStore.putSync(fireCountKey, 102L);<br>assert dataStore.get(fireCountKey, 0L) == 102L;</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key</code></td>
+ <td>
+ <p>The typed key of the entry to get data for.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T defaultValue</code></td>
+ <td>
+ <p>A value to default to, if the key isn't found.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">See also</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/android/com/google/firebase/datastore/package-summary.html#(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</a></code></td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="putSync(androidx.datastore.preferences.core.Preferences.Key, kotlin.Any)"></a><a name="putSync-androidx.datastore.preferences.core.Preferences.Key-kotlin.Any-"></a><a name="putsync"></a>
+ <h3 class="api-name" id="putSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">putSync</h3>
+ <pre class="api-signature no-pretty-print">public final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a> <T extends <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#putSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">putSync</a>(@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key, @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T value)</pre>
+ <p>Sets and saves data in the datastore <em>synchronously</em>.</p>
+ <p>Existing values will be overwritten.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">dataStore.putSync(PreferencesKeys.longKey("fire-count"), 102L);</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key</code></td>
+ <td>
+ <p>The typed key of the entry to save the data under.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T value</code></td>
+ <td>
+ <p>The data to save.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code></td>
+ <td>
+ <p>The <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code> object that the data was saved under.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
+ --- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/datastore/DataStoreKt.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/datastore/DataStoreKt.html 2025-04-10 21:04:43.093597765 +0000
@@ -0,0 +1,81 @@
+<html devsite="true">
+ <head>
+ <title>DataStoreKt</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <h1>DataStoreKt</h1>
+ <p>
+ <pre>public final class <a href="/docs/reference/android/com/google/firebase/datastore/DataStoreKt.html">DataStoreKt</a></pre>
+ </p>
+ <hr>
+ <h2>Summary</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public methods</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>static final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T</code></td>
+ <td>
+ <div><code><T extends <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStoreKt.html">DataStoreKt</a>.<a href="/docs/reference/android/com/google/firebase/datastore/DataStoreKt.html#(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</a>(<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a> receiver,<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key,<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T defaultValue<br>)</code></div>
+ <p>Helper method for getting the value out of a <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code> object if it exists, else falling back to the default value.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="list">
+ <h2>Public methods</h2>
+ <div class="api-item"><a name="(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key, kotlin.Any)"></a><a name="-androidx.datastore.preferences.core.Preferences-.getOrDefault-androidx.datastore.preferences.core.Preferences.Key-kotlin.Any-"></a><a name="getordefault"></a>
+ <h3 class="api-name" id="(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">DataStoreKt.getOrDefault</h3>
+ <pre class="api-signature no-pretty-print">public static final @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T <T extends <a href="https://developer.android.com/reference/kotlin/java/lang/Object.html">Object</a>> <a href="/docs/reference/android/com/google/firebase/datastore/DataStoreKt.html">DataStoreKt</a>.<a href="/docs/reference/android/com/google/firebase/datastore/DataStoreKt.html#(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</a>(<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a> receiver,<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key,<br> @<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T defaultValue<br>)</pre>
+ <p>Helper method for getting the value out of a <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code> object if it exists, else falling back to the default value.</p>
+ <p>This is primarily useful when working with an instance of <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a></code></p>
+ <ul>
+ <li>
+ <p>like when working within an <code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">DataStorage.editSync</a></code> callback.</p>
+ </li>
+ </ul>
+ <p>Example:</p>
+ <pre class="prettyprint">dataStore.editSync((pref) -> {<br> long heartBeatCount = DataStoreKt.getOrDefault(pref, HEART_BEAT_COUNT_TAG, 0L);<br> heartBeatCount+=1;<br> pref.set(HEART_BEAT_COUNT_TAG, heartBeatCount);<br><br> return null;<br>});</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T> key</code></td>
+ <td>
+ <p>The typed key of the entry to get data for.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@<a href="https://developer.android.com/reference/kotlin/androidx/annotation/NonNull.html">NonNull</a> T defaultValue</code></td>
+ <td>
+ <p>A value to default to, if the key isn't found.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
+ --- /home/runner/diff/original/firebase-kotlindoc/android/com/google/firebase/datastore/package-summary.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/android/com/google/firebase/datastore/package-summary.html 2025-04-10 21:04:43.090597781 +0000
@@ -0,0 +1,32 @@
+<html devsite="true">
+ <head>
+ <title>com.google.firebase.datastore</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/android/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <h1>com.google.firebase.datastore</h1>
+ <h2>Classes</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/android/com/google/firebase/datastore/DataStorage.html">DataStorage</a></code></td>
+ <td>
+ <p>Wrapper around <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/core/DataStore.html">DataStore</a></code> for easier migration from <code>SharedPreferences</code> in Java code.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="/docs/reference/android/com/google/firebase/datastore/DataStoreKt.html">DataStoreKt</a></code></td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </body>
+</html>
+ --- /home/runner/diff/original/firebase-kotlindoc/kotlin/client/firebase-common/_toc.yaml 2025-04-10 21:07:58.948608615 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/client/firebase-common/_toc.yaml 2025-04-10 21:04:43.081597827 +0000
@@ -29,6 +29,16 @@
- title: "Firebase"
path: "/docs/reference/kotlin/com/google/firebase/Firebase.html"
+- title: "firebase.datastore"
+ path: "/docs/reference/kotlin/com/google/firebase/datastore/package-summary.html"
+
+ section:
+ - title: "Classes"
+
+ section:
+ - title: "DataStorage"
+ path: "/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html"
+
- title: "firebase.ktx"
status: deprecated
path: "/docs/reference/kotlin/com/google/firebase/ktx/package-summary.html" --- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/datastore/DataStorage.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/datastore/DataStorage.html 2025-04-10 21:04:43.083597817 +0000
@@ -0,0 +1,409 @@
+<html devsite="true">
+ <head>
+ <title>DataStorage</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="metadata-info-block"></div>
+ <h1>DataStorage</h1>
+ <p>
+ <pre>class <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html">DataStorage</a></pre>
+ </p>
+ <hr>
+ <p>Wrapper around <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/core/DataStore.html">DataStore</a></code> for easier migration from <code>SharedPreferences</code> in Java code.</p>
+ <p>Automatically migrates data from any <code>SharedPreferences</code> that share the same context and name.</p>
+ <p>There should only ever be <em>one</em> instance of this class per context and name variant.</p>
+ <blockquote>
+ <p>Do <b>NOT</b> use this <em>unless</em> you're bridging Java code. If you're writing new code, or your code is in Kotlin, then you should create your own singleton that uses <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/core/DataStore.html">DataStore</a></code> directly.</p>
+ </blockquote>
+ <p>Example:</p>
+ <pre class="prettyprint">DataStorage heartBeatStorage = new DataStorage(applicationContext, "FirebaseHeartBeat");</pre>
+ <h2>Summary</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public constructors</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#DataStorage(android.content.Context,kotlin.String)">DataStorage</a>(context: <a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a>, name: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>)</code></div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public functions</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></code></td>
+ <td>
+ <div><code><T : <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>?> <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#contains(androidx.datastore.preferences.core.Preferences.Key)">contains</a>(key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T>)</code></div>
+ <p>Checks if a key is present in the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a>(transform: (<a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a>) <span style="white-space: nowrap;">-></span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>)</code></div>
+ <p>Transactionally edit data in the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a><<a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><*>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#getAllSync()">getAllSync</a>()</code></div>
+ <p>Gets all data in the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>T</code></td>
+ <td>
+ <div><code><T : <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>?> <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#getSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getSync</a>(key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T>, defaultValue: T)</code></div>
+ <p>Get data from the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code></td>
+ <td>
+ <div><code><T : <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>?> <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#putSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">putSync</a>(key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T>, value: T)</code></div>
+ <p>Sets and saves data in the datastore <em>synchronously</em>.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%"><h3>Public properties</h3></th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#context()">context</a></code></div>
+ <p>The <code><a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a></code> that this data will be saved under.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></code></td>
+ <td>
+ <div><code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#name()">name</a></code></div>
+ <p>What the storage file should be named.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="list">
+ <h2>Public constructors</h2>
+ <div class="api-item"><a name="DataStorage(android.content.Context, kotlin.String)"></a><a name="DataStorage-android.content.Context-kotlin.String-"></a><a name="datastorage"></a>
+ <h3 class="api-name" id="DataStorage(android.content.Context,kotlin.String)">DataStorage</h3>
+ <pre class="api-signature no-pretty-print"><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#DataStorage(android.content.Context,kotlin.String)">DataStorage</a>(context: <a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a>, name: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a>)</pre>
+ </div>
+ </div>
+ <div class="list">
+ <h2>Public functions</h2>
+ <div class="api-item"><a name="contains-androidx.datastore.preferences.core.Preferences.Key-"></a><a name="contains"></a>
+ <h3 class="api-name" id="contains(androidx.datastore.preferences.core.Preferences.Key)">contains</h3>
+ <pre class="api-signature no-pretty-print">fun <T : <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>?> <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#contains(androidx.datastore.preferences.core.Preferences.Key)">contains</a>(key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T>): <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html">Boolean</a></pre>
+ <p>Checks if a key is present in the datastore <em>synchronously</em>.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">Preferences.Key<Long> fireCountKey = PreferencesKeys.longKey("fire-count");<br>assert !dataStore.contains(fireCountKey);<br><br>dataStore.putSync(fireCountKey, 102L);<br>assert dataStore.contains(fireCountKey);</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T></code></td>
+ <td>
+ <p>The typed key of the entry to find.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="editSync-kotlin.Function1-"></a><a name="editsync"></a>
+ <h3 class="api-name" id="editSync(kotlin.Function1)">editSync</h3>
+ <pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a>(transform: (<a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a>) <span style="white-space: nowrap;">-></span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a>): <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></pre>
+ <p>Transactionally edit data in the datastore <em>synchronously</em>.</p>
+ <p>Edits made within the <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">transform</a></code> callback will be saved (committed) all at once once the <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">transform</a></code> block exits.</p>
+ <p>Because of the blocking nature of this function, you should <em>never</em> call <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a></code> within an already running <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">transform</a></code> block. Since this can cause a deadlock, <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a></code> will instead throw an exception if it's caught.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">dataStore.editSync((pref) -> {<br> Long heartBeatCount = pref.get(HEART_BEAT_COUNT_TAG);<br> if (heartBeatCount == null || heartBeatCount 30) {<br> heartBeatCount = 0L;<br> }<br> pref.set(HEART_BEAT_COUNT_TAG, heartBeatCount);<br> pref.set(LAST_STORED_DATE, "1970-0-1");<br><br> return null;<br>});</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>transform: (<a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a>) <span style="white-space: nowrap;">-></span> <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html">Unit</a></code></td>
+ <td>
+ <p>A callback to invoke with the <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a></code> object.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code></td>
+ <td>
+ <p>The <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code> object that the data was saved under.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Throws</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>kotlin.IllegalStateException: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-illegal-state-exception/index.html">kotlin.IllegalStateException</a></code></td>
+ <td>
+ <p>If you attempt to call <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">editSync</a></code> within another <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">transform</a></code> block.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">See also</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/datastore/package-summary.html#(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</a></code></td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="getAllSync--"></a><a name="getallsync"></a>
+ <h3 class="api-name" id="getAllSync()">getAllSync</h3>
+ <pre class="api-signature no-pretty-print">fun <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#getAllSync()">getAllSync</a>(): <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a><<a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><*>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>></pre>
+ <p>Gets all data in the datastore <em>synchronously</em>.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">ArrayList<String> allDates = new ArrayList<>();<br><br>for (Map.Entry<Preferences.Key<?>, Object> entry : dataStore.getAllSync().entrySet()) {<br> if (entry.getValue() instanceof Set) {<br> Set<String> dates = new HashSet<>((Set<String>) entry.getValue());<br> if (!dates.isEmpty()) {<br> allDates.add(new ArrayList<>(dates));<br> }<br> }<br>}</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html">Map</a><<a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><*>, <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>></code></td>
+ <td>
+ <p>An <em>immutable</em> map of data currently present in the datastore.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="getSync(androidx.datastore.preferences.core.Preferences.Key, kotlin.Any)"></a><a name="getSync-androidx.datastore.preferences.core.Preferences.Key-kotlin.Any-"></a><a name="getsync"></a>
+ <h3 class="api-name" id="getSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getSync</h3>
+ <pre class="api-signature no-pretty-print">fun <T : <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>?> <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#getSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getSync</a>(key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T>, defaultValue: T): T</pre>
+ <p>Get data from the datastore <em>synchronously</em>.</p>
+ <p>Note that if the key is <em>not</em> in the datastore, while the <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#getSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">defaultValue</a></code> will be returned instead- it will <b>not</b> be saved to the datastore; you'll have to manually do that.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">Preferences.Key<Long> fireCountKey = PreferencesKeys.longKey("fire-count");<br>assert dataStore.get(fireCountKey, 0L) == 0L;<br><br>dataStore.putSync(fireCountKey, 102L);<br>assert dataStore.get(fireCountKey, 0L) == 102L;</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T></code></td>
+ <td>
+ <p>The typed key of the entry to get data for.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>defaultValue: T</code></td>
+ <td>
+ <p>A value to default to, if the key isn't found.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">See also</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/datastore/package-summary.html#(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</a></code></td>
+ <td></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="api-item"><a name="putSync(androidx.datastore.preferences.core.Preferences.Key, kotlin.Any)"></a><a name="putSync-androidx.datastore.preferences.core.Preferences.Key-kotlin.Any-"></a><a name="putsync"></a>
+ <h3 class="api-name" id="putSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">putSync</h3>
+ <pre class="api-signature no-pretty-print">fun <T : <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>?> <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#putSync(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">putSync</a>(key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T>, value: T): <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></pre>
+ <p>Sets and saves data in the datastore <em>synchronously</em>.</p>
+ <p>Existing values will be overwritten.</p>
+ <p>Blocks on the currently running thread.</p>
+ <p>Example:</p>
+ <pre class="prettyprint">dataStore.putSync(PreferencesKeys.longKey("fire-count"), 102L);</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T></code></td>
+ <td>
+ <p>The typed key of the entry to save the data under.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>value: T</code></td>
+ <td>
+ <p>The data to save.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Returns</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code></td>
+ <td>
+ <p>The <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code> object that the data was saved under.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="list">
+ <h2>Public properties</h2>
+ <div class="api-item"><a name="getContext()"></a><a name="setContext()"></a><a name="getContext--"></a><a name="setContext--"></a>
+ <h3 class="api-name" id="context()">context</h3>
+ <pre class="api-signature no-pretty-print">val <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#context()">context</a>: <a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a></pre>
+ <p>The <code><a href="https://developer.android.com/reference/kotlin/android/content/Context.html">Context</a></code> that this data will be saved under.</p>
+ </div>
+ <div class="api-item"><a name="getName()"></a><a name="setName()"></a><a name="getName--"></a><a name="setName--"></a>
+ <h3 class="api-name" id="name()">name</h3>
+ <pre class="api-signature no-pretty-print">val <a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#name()">name</a>: <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html">String</a></pre>
+ <p>What the storage file should be named.</p>
+ </div>
+ </div>
+ </body>
+</html>
+ --- /home/runner/diff/original/firebase-kotlindoc/kotlin/com/google/firebase/datastore/package-summary.html 1970-01-01 00:00:00.000000000 +0000
+++ /home/runner/diff/modified/firebase-kotlindoc/kotlin/com/google/firebase/datastore/package-summary.html 2025-04-10 21:04:43.083597817 +0000
@@ -0,0 +1,87 @@
+<html devsite="true">
+ <head>
+ <title>com.google.firebase.datastore</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "docs/reference/kotlin/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <h1>com.google.firebase.datastore</h1>
+ <h2>Classes</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <tbody class="list">
+ <tr>
+ <td><code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html">DataStorage</a></code></td>
+ <td>
+ <p>Wrapper around <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/core/DataStore.html">DataStore</a></code> for easier migration from <code>SharedPreferences</code> in Java code.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <h2>Extension functions summary</h2>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <tbody class="list">
+ <tr>
+ <td><code>T</code></td>
+ <td>
+ <div><code><T : <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>?> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a>.<a href="/docs/reference/kotlin/com/google/firebase/datastore/package-summary.html#(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</a>(key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T>, defaultValue: T)</code></div>
+ <p>Helper method for getting the value out of a <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code> object if it exists, else falling back to the default value.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <h2>Extension functions</h2>
+ <div class="api-item"><a name="(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key, kotlin.Any)"></a><a name="-androidx.datastore.preferences.core.Preferences-.getOrDefault-androidx.datastore.preferences.core.Preferences.Key-kotlin.Any-"></a><a name="getordefault"></a>
+ <h3 class="api-name" id="(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</h3>
+ <pre class="api-signature no-pretty-print">fun <T : <a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html">Any</a>?> <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a>.<a href="/docs/reference/kotlin/com/google/firebase/datastore/package-summary.html#(androidx.datastore.preferences.core.Preferences).getOrDefault(androidx.datastore.preferences.core.Preferences.Key,kotlin.Any)">getOrDefault</a>(key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T>, defaultValue: T): T</pre>
+ <p>Helper method for getting the value out of a <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.html">Preferences</a></code> object if it exists, else falling back to the default value.</p>
+ <p>This is primarily useful when working with an instance of <code><a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/MutablePreferences.html">MutablePreferences</a></code></p>
+ <ul>
+ <li>
+ <p>like when working within an <code><a href="/docs/reference/kotlin/com/google/firebase/datastore/DataStorage.html#editSync(kotlin.Function1)">DataStorage.editSync</a></code> callback.</p>
+ </li>
+ </ul>
+ <p>Example:</p>
+ <pre class="prettyprint">dataStore.editSync((pref) -> {<br> long heartBeatCount = DataStoreKt.getOrDefault(pref, HEART_BEAT_COUNT_TAG, 0L);<br> heartBeatCount+=1;<br> pref.set(HEART_BEAT_COUNT_TAG, heartBeatCount);<br><br> return null;<br>});</pre>
+ <div class="devsite-table-wrapper">
+ <table class="responsive">
+ <colgroup>
+ <col width="40%">
+ <col>
+ </colgroup>
+ <thead>
+ <tr>
+ <th colspan="100%">Parameters</th>
+ </tr>
+ </thead>
+ <tbody class="list">
+ <tr>
+ <td><code>key: <a href="https://developer.android.com/reference/kotlin/androidx/datastore/preferences/core/Preferences.Key.html">Preferences.Key</a><T></code></td>
+ <td>
+ <p>The typed key of the entry to get data for.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>defaultValue: T</code></td>
+ <td>
+ <p>A value to default to, if the key isn't found.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </body>
+</html>
+ |
Generated by 🚫 Danger |
Coverage Report 1Affected Products
Test Logs |
Test Results 50 files - 984 50 suites - 984 1m 14s ⏱️ - 33m 13s Results for commit 42824aa. ± Comparison against base commit a362e45. This pull request removes 5798 tests.
♻️ This comment has been updated with latest results. |
Size Report 1Affected Products
Test Logs |
Startup Time Report 1Note: Layout is sometimes suboptimal due to limited formatting support on GitHub. Please check this report on GCS. Notes
Startup Times
|
Temp CL to see Health Metrics