Skip to content

Commit 35d1842

Browse files
author
Brian Chen
committed
Port local serializer changes
1 parent 0399724 commit 35d1842

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

firebase-firestore/src/main/java/com/google/firebase/firestore/local/LocalSerializer.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import com.google.firestore.v1.Write.Builder;
3535
import com.google.protobuf.ByteString;
3636
import java.util.ArrayList;
37-
import java.util.Collections;
3837
import java.util.List;
3938

4039
/** Serializer for values stored in the LocalStore. */
@@ -182,28 +181,26 @@ MutationBatch decodeMutationBatch(com.google.firebase.firestore.proto.WriteBatch
182181
// representing `transforms` with `update_transforms` on the SDK means that old `transform`
183182
// mutations stored in IndexedDB need to be updated to `update_transforms`.
184183
// TODO(b/174608374): Remove this code once we perform a schema migration.
185-
for (int i = batch.getWritesCount() - 1; i >= 0; --i) {
186-
Write mutation = batch.getWrites(i);
187-
if (mutation.hasTransform()) {
184+
for (int i = 0; i < batch.getWritesCount(); ++i) {
185+
Write currentMutation = batch.getWrites(i);
186+
boolean hasTransform =
187+
i + 1 < batch.getWritesCount() && batch.getWrites(i + 1).hasTransform();
188+
if (hasTransform) {
188189
hardAssert(
189-
i >= 1 && !batch.getWrites(i - 1).hasTransform() && batch.getWrites(i - 1).hasUpdate(),
190+
batch.getWrites(i).hasUpdate(),
190191
"TransformMutation should be preceded by a patch or set mutation");
191-
Write mutationToJoin = batch.getWrites(i - 1);
192-
Builder newMutationBuilder = Write.newBuilder(mutationToJoin);
193-
for (FieldTransform fieldTransform : mutation.getTransform().getFieldTransformsList()) {
192+
Builder newMutationBuilder = Write.newBuilder(currentMutation);
193+
for (FieldTransform fieldTransform :
194+
currentMutation.getTransform().getFieldTransformsList()) {
194195
newMutationBuilder.addUpdateTransforms(fieldTransform);
195196
}
196197
mutations.add(rpcSerializer.decodeMutation(newMutationBuilder.build()));
197-
--i;
198+
++i;
198199
} else {
199-
mutations.add(rpcSerializer.decodeMutation(mutation));
200+
mutations.add(rpcSerializer.decodeMutation(currentMutation));
200201
}
201202
}
202203

203-
// Reverse the mutations to preserve the original ordering since the above for-loop iterates in
204-
// reverse order. We use reverse() instead of prepending the elements into the mutations array
205-
// since prepending to a List is O(n).
206-
Collections.reverse(mutations);
207204
return new MutationBatch(batchId, localWriteTime, baseMutations, mutations);
208205
}
209206

0 commit comments

Comments
 (0)