On 1 May 2014 17:31, Jonas Sicking <jo...@sicking.cc> wrote: >> If it's going to happen over and over, why not an event? >> >> function register() { >> navigator.push.register().then(endpoint => sendToAppServer(endpoint)); >> } >> navigator.push.onderegister = e => register; > > For two reasons: > > * If the page does some initialization asynchronously then it might > miss that the "deregister" event fires. I.e. it is very easy to > accidentally register the onderegister event handler "too late". > * It would require that we for each page that the user visits check if > that page has a registration, and if that registration has been lost > by the server. We only want to do this on pages that care about push > registration and is actually going to make a registration if needed. > Not for every page the user visits.
Fair points, but with a an event coupled to a state (attribute boolean registered), this can be avoided. I guess that the point of your second proposal at least is that it sort of rolls all that into the one package. I think that I prefer the "registration needed callback" approach, even though it seems to be a little surprising in the sense that it shares many characteristics with events. Maybe a onregistrationneeded event would be a closer fit.