javascript – CORS não habilitado no Firebase Cloud Functions

Preciso habilitar o CORS na minha API pra poder receber requests do navegador. Estou usando Firebase Cloud Functions.

const functions = require('firebase-functions');
const express = require('express');
const axios = require('axios')
const cors = require('cors')

const app = express()
app.use(cors({ origin: true }));

app.post('/push', (request, response)=>{
    SendNotifications(request.body)
    response.send("Notificação Enviada!");
})

function SendNotifications(params){

    axios.post('https://exp.host/--/api/v2/push/send', params).then((res)=>{
        console.log(res)
        return res;
    }).catch((err)=>{
        console.log(err)
        throw err
    })
}

exports.api = functions.https.onRequest(app)

Já habilitei o CORS e deixei como {origin:true} , mas as requests do navegador sempre retornam erro do CORS. Testando no insomnia funciona normalmente.

javascript – Event listeners not working on a site once deployed to Firebase

I’ve built a web app that I’m trying to host on Firebase. The app is working fine in development mode. However once I bundle them up (using Webpack/Babel), initialise the project with Firebase and test on the Firebase local development server (firebase serve), some of the Javascript stops working in Chrome (in Safari no issue). Simple console.log()s are working but none of my event listeners are attached.

Event listeners are being added with .addEventListener().

I’ve also deployed the site to Firebase and oddly the event listeners then stop working on Safari too.

Does anyone have any suggestions of likely places where something might have gone wrong in order to get this behaviour? Sorry for a fairly unspecific problem but I haven’t been able to diagnose
where in the process the issue is.

SwiftUI: Firebase ForEach list perform edit function unable to edit the selected row item

The scenario is currently I retrieved list of data from firebase and store in an array. I used ForEach to loop the array and display by using list. For each row of data in the list, I added a edit button to edit the selected row item. However, when I click on the “Edit” button of a particular row, it always display the data of the first row instead of the selected one.

Here is my first screen:
enter image description here

The screen when I click on “Edit” button for “Orange Jus”:
enter image description here

As you can see on my second screen, I clicked for “Orange Jus” but it is showing the “Limau Jus”.

Here is my code for ForEach:

struct ManageItemListView: View {
    
    @ObservedObject var stockViewModel : StockViewModel
    let getLoc: String
    
    var body: some View {
        
        self.stockViewModel.getItemDetails(loc: self.getLoc)
        
        return VStack {
            
            List {
                
                ForEach(stockViewModel.itemList) {index in
                    
                    ManageItemView(stockViewModel: self.stockViewModel, itemLst: index, getLoc: self.getLoc)
                }
            }
        }
    }
}

struct ManageItemView: View {
    
    let stockViewModel : StockViewModel
    
    let itemLst : ItemList
    
    let getLoc : String

    @State var showModal = false
    
    var body: some View {
        
        VStack {

            HStack {
                
                ImageView(vmLoc: self.getLoc, itemId: self.itemLst.id)
                
                VStack(alignment: .leading) {
                    
                    Text(itemLst.name).fontWeight(.semibold).padding(.bottom, 5)
                    
                    Text("RM(itemLst.price)")
                    
                }.padding()
                
                Spacer()
                
                btnEditItem(stockViewModel: self.stockViewModel, itemLst: self.itemLst, getLoc: self.getLoc)
                
            }.padding(.vertical, 10)
        }
    }
}

Thank you.

Duda con los Links Dinámicos en Flutter y Firebase

estoy intentando crear una aplicacion y quiero generar links con invitaciones para compartirlos por whats app. La idea es que el usuario haga click en el link y le lleva a la aplicacion si esta instalada y si no a la app store.

Para ello estoy utlizando los “Dynamic links” de Firebase. El problema es que no sabria la forma de generar un link único para cada invitacion con FireBase. Por ello tambien he investigado y he visto que estos links se pueden programar en el propio flutter, por ejemplo de la siguiente forma en este ejemplo sacado de Fiddle Stacks:

Future<String> createFirstPostLink(String title) async {
    final DynamicLinkParameters parameters = DynamicLinkParameters(
      uriPrefix: 'https://filledstacks.page.link',
      link: Uri.parse('https://www.compound.com/post?title=$title'),
      androidParameters: AndroidParameters(
        packageName: 'com.filledstacks.compound',
      ),
      // NOT ALL ARE REQUIRED ===== HERE AS AN EXAMPLE =====
      iosParameters: IosParameters(
        bundleId: 'com.example.ios',
        minimumVersion: '1.0.1',
        appStoreId: '123456789',
      ),
      googleAnalyticsParameters: GoogleAnalyticsParameters(
        campaign: 'example-promo',
        medium: 'social',
        source: 'orkut',
      ),
      itunesConnectAnalyticsParameters: ItunesConnectAnalyticsParameters(
        providerToken: '123456',
        campaignToken: 'example-promo',
      ),
      socialMetaTagParameters: SocialMetaTagParameters(
        title: 'Example of a Dynamic Link',
        description: 'This link works whether app is installed or not!',
      ),
    );

    final Uri dynamicUrl = await parameters.buildUrl();

    return dynamicUrl.toString();
}

La pregunta es como podría adaptar eso para mi caso teniendo en cuenta que mi api tiene la siguente forma:

http://app.aplicacion.com/api/(APIKEYU)/{id_invitación}

y el formato de FireBase es http://aplicacion.page.link

Ante todo sabed que soy muy nuevo en esto y no se muy bien por donde tirar. Gracias de antemano.

Como mapear correctamente una Query de un double en Firebase y Flutter – NoSuchMethodError: Class ‘double’ has no instance method ‘[]’

Tengo una base de datos como la siguiente…

> > loteActual:     
> >          pesoInicial: 100.0
> >          ultimoCrec: 350.0`

Quiero hacer una consulta simple del pesoInicial (tipo double) y llevo horas sin lograr hacerlo ya que siempre me encuentro con el siguiente error:

Exception has occurred. NoSuchMethodError (NoSuchMethodError: Class
‘double’ has no instance method ‘()’. Receiver: 350.0 Tried calling:
)

Como se observa, pareciera que está recibiendo bien el dato (350.0), pero tiene algún tipo de estructura que no me permite leerlo.

El código que tengo para la consulta es el siguiente:

Future<double> cargarPesoInicial( String idEmpresa, String idEstanque) async {

  double pesoInicial; 

  Query resp = db.child('PATH.../loteActual/pesoInicial');

  return resp.once().then((snapshot) {

      if (snapshot.value == null) return pesoInicial;
      if (snapshot.value('error') != null) return pesoInicial; 
      pesoInicial = snapshot.value;
      return pesoInicial;

      }
  );
} 

Y el error aparece cuando hago el llamado al método…

double _pesoInicial;
_pesoInicial      = await loteActualBloc.cargarPesoInicial(idEmpresa, idEstanque);

reactjs – How to use firebase Android config for web analytics?

I have a hybrid Android app Web view part is in React (not react-native). We have firebase config for Android app (google-services.json)

{
  project_info: {
    project_number: 'xxx',
    firebase_url: 'https://xxx.firebaseio.com',
    project_id: 'xxx',
    storage_bucket: 'xxx.appspot.com',
  },
  client: (
    {
      client_info: {
        mobilesdk_app_id: '1:xxx:android:xxx',
        android_client_info: {
          package_name: 'xxx',
        },
      },
      oauth_client: (
        {
          client_id:
            'xxx',
          client_type: 3,
        },
      ),
      api_key: (
        {
          current_key: 'xxx',
        },
      ),
      services: {
        appinvite_service: {
          other_platform_oauth_client: (
            {
              client_id:
                'xxx',
              client_type: 3,
            },
            {
              client_id:
                'xxx',
              client_type: 2,
              ios_info: {
                bundle_id: 'xxx',
              },
            },
          ),
        },
      },
    },
  ),
  configuration_version: '1',
};

and base on firebase analytics documentation for web the config object should be

            {
                apiKey: firebaseConfig.client(0).api_key(0).current_key,
                authDomain: '?????',
                databaseURL: firebaseConfig.project_info.firebase_url,
                projectId: firebaseConfig.project_info.project_id,
                storageBucket: firebaseConfig.project_info.storage_bucket,
                messagingSenderId: '????',
                appId: firebaseConfig.client(0).client_info.mobilesdk_app_id,
                measurementId: '????',
            }

first question: Is it OK to use Android config value for configuring web analytics in Hybrid app?
second question: what are mappings forauthDomain,measurementId and messagingSenderId ?

firebase – ¿como configuro regla firestore para borrado?

Buen dia, estoy con reglas de firestore, para la creación me funciona pero para el borrado no, aunque según yo debería ser lo mismo, lo que intento hacer es que solo permita crear y borrar documentos si el documento contiene en un campo el ID del usuario autenticado o bien si es un usuario que sea Admin, no entiendo por que para crear si me funciona pero para borrar me marca error 🙁 ¿que cambia para el borrado?

Aquí el ejemplo, repito el write funciona, el delete no 🙁

match /pagos/{year}/pagos/{id} {
allow write: if request.auth.uid == request.resource.data.alumnoId || 
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.isAdmin;

allow delete: if request.auth.uid == request.resource.data.alumnoId || 
get(/databases/$(database)/documents/users/$(request.auth.uid)).data.isAdmin;

}

array – Como hacer carrito de compras en Angular y Firebase

me encuentro con la duda de como realizar una especie de carrito de compras usando Angular y Firebase.

Como se ve en la imagen, tengo desplegados todos los productos creados y la idea es que al darle el botón agregar lo guarde en Firebase y lo pueda mostrar los productos agregados en el modal que se aprecia en la imagen.

No soy un experto en estas tecnologías, pero buscando información vi que el arreglo que uso para mostrar los productos del ngFor tengo que mandarlo a otro arreglo y ese nuevo arreglo imprimirlo en el modal, la otra manera que vi es algo similar pero usando lo que es el localStorage, al menos eso quiero pensar como posibles soluciones.

Les agradecería mucho que me orientaran en lo que tengo que hacer o si saben de algún tutorial que pueda ayudarme 😀
Saludos!!

Imagen de mi proyecto

firebase analytics – How to build modular queries in BigQuery?

I have some useful queries, I’d like to build a few more complex ones that needs them as sub queries. Can I call them by name ?

  1. I’v seen the ‘save view’ option and was able to build new queries that used saved views.

Does this method refreshes the saved view each time a top query uses it, by re-executing the relevant queries ? or is it just a named query result, that I have to rerun each time to refresh ?

  1. other suggestions to build queries in modular fashion ? For example when I change the days range I select from I want all subqueries to use the range.
    In programming it’s either using promoters or globals, how to do this in BigQuery ?

java – variavel nao recebe valor do database do firebase

Estou tentando recuperar um valor no database do firebase no androidStudio e nao estou conseguindo, alguem consegue identificar alguma falha no código?

    }
    
    public void criarGestao(String data) {
        String email = ConfiguracaoFirebase.getFirebaseAutenticacao().getCurrentUser().getEmail();
        String idUsuario = Base64Custom.codificarBase64(email);
        String mesAno = DataCustom.mesAnoEscolhido(data);
        gestaoRef = ConfiguracaoFirebase.getFirebaseDatabase()
                .child("gestao")
                .child(idUsuario)
                .child(mesAno);

        valueEventListener = gestaoRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if (!dataSnapshot.exists()) {
                    Gestao novaGestao = new Gestao();

                    String data = campoData.getText().toString();

                    novaGestao.salvarGestao(data);
                }
                Gestao gestao = dataSnapshot.getValue(Gestao.class);

                receitaMes = gestao.getReceitaMes();
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

    public void salvarReceita(View view){
        String data = campoData.getText().toString();

        //Salvo dados na classe Movimentacao
        Movimentacao movimentacao = new Movimentacao();
        Double valorRecuperado = Double.parseDouble(campoValor.getText().toString());

        movimentacao.setValor(valorRecuperado);
        movimentacao.setData(data);
        movimentacao.setDescriçao(campoDescricao.getText().toString());
        movimentacao.setTipo("r");

        movimentacao.salvar(data);

        criarGestao(data);

        Log.d("Receita do mes", String.valueOf(receitaMes));

        receitaMes = receitaMes + valorRecuperado;

        atualizarReceita(receitaMes, data);

        finish();
    }

Aparentemente o valor receitaMes nao esta sendo acessado dentro do EventeListener, embora todo resto esteja sendo acessado. Sei que nao está sendo acessado porque fiz alguns testes e quando coloco ele no fim do metodo criarGestao() ele recebe o valor que eu defino pra ele, agora se eu defino um valor qualquer direto no EventListener o receitaMes continua nao recebendo nada.