swift – SwiftUI Lista con valores cargados de Firebase

Estoy empezando con el desarrollo de aplicaciones para iOS y me he encontrado con el siguiente problema. Tengo una List que tiene que recuperar datos de Firebase. En el .onAppear de la lista, llamo a una función que descarga esos datos y los escribe en un array que luego se debería mostrar en la List, pero esto no ocurre la primera vez que se muestra la lista. Sin embargo, si voy a otra View y luego vuelvo a la View con la List, los datos si que aparecen.
He seguido el ejemplo que hay en https://github.com/firebase/quickstart-ios/tree/master/firestore/FirestoreSwiftUIExample, pero tampoco me funciona.
El código de la View es el siguiente:

private let db = Firestore.firestore()

@EnvironmentObject var viewModel:AppViewModel
@ObservedObject private var subsModel = subsViewModel()

var body: some View {
    
    VStack{
        List(subsModel.subscriptions, id: .id){subscription in
            NavigationLink(destination: SubDetailView(subscription: subscription)){
                RowView(subscription: subscription)
            }
        }
        .navigationTitle("Subscriptions")
        .toolbar(content: {
            ToolbarItem(placement: .navigationBarTrailing) {
                NavigationLink(destination:AddSubsView())
                {
                    Button(action: {
                        
                    }) {
                        Label("Add", systemImage: "plus")
                    }
                }
            }
        })
        Button(action: {viewModel.signOut()}, label: {
            Text("Sign Out")
        })
        BannerView()
    }
    .onAppear {
        let query = subsModel.query(category: nil, city: nil, price: nil, sortOption: nil)
        subsModel.subscribe(to: query)
    }
    .onDisappear {
        subsModel.unsubscribe()
    }
}

Y el código del ViewModel es el siguiente:

@Published var subscriptions = (Subscription)()

private var db = Firestore.firestore()

private var listener: ListenerRegistration?
private let baseQuery: Query = Firestore.firestore().collection("subscriptions").document(auth.currentUser!.uid).collection("mySubscriptions")

deinit {
  unsubscribe()
}

func unsubscribe() {
  if listener != nil {
    listener?.remove()
    listener = nil
  }
}

func subscribe(to query: Query) {
  if listener == nil {
    listener = query.addSnapshotListener { (weak self) querySnapshot, error in
      guard let documents = querySnapshot?.documents else {
        print("Error fetching documents: (error!)")
        return
      }

      guard let self = self else { return }
      self.subscriptions = documents.compactMap { document in
        do {
          var subscription = try document.data(as: Subscription.self)
            subscription?.reference = document.reference
          return subscription
        } catch {
          print(error)
          return nil
        }
      }
    }
  }
}

func filter(query: Query) {
  unsubscribe()
  subscribe(to: query)
}

func query(category: String?, city: String?, price: Int?, sortOption: String?) -> Query {
  var filteredQuery = baseQuery

  if let category = category {
    filteredQuery = filteredQuery.whereField("category", isEqualTo: category)
  }

  if let city = city {
    filteredQuery = filteredQuery.whereField("city", isEqualTo: city)
  }

  if let price = price {
    filteredQuery = filteredQuery.whereField("price", isEqualTo: price)
  }

  if let sortOption = sortOption {
    filteredQuery = filteredQuery.order(by: sortOption)
  }

  return filteredQuery
}

En la primera ejecución, dentro del ViewModel, el listener = query.addSnapshotListener {} no devuelve nada y se sale de la ejecución, cosa que no pasa cuando voy a otra View y vuelvo a esta.

Gracias de antemano por vuestra ayuda.