Closed mgschwend closed 6 years ago
Fixed the issue, @diluno könntest du das kurz reviewen?
Versteh ich nicht, warum 'store' statt 'size'? Funktionierts so? @LucNaterop wie ist das implementiert im Backend?
Ich ging eigentlich davon aus dass wir hier einen Timeout brauchen, bevor wir das Bild anzeigen.
@diluno @mgschwend store
versus size
macht keinen Unterschied! Meiner Meinung nach is das Problem hier folgendes: Es kann halt ein paar 100 ms gehen bis das Bild vom Server serviert wird. Deshalb sollte ein setInterval
gemacht werden, der läuft bis das Bild verfügbar ist.
@diluno @LucNaterop
Ich habe gesehen, dass ?size=small
das Bild in einer Grösse von 1000 x irgendwas pixels liefert und ?store=small
das Bild in 200 × irgendwas pixels. Das kleinere Bild scheint schneller verfügbar zu sein, darum habe ich das so gemacht. store=small
habe ich aus anderen Stellen im Code übernommen 😃
Beste Lösung wäre wahrscheinlich nach dem Delay versuchen das Bild zu holen bis es klappt, nicht nur einmal.
So funktionierts grundsätzlich, UI müsste allerdings noch angepasst werden (Beim Fehler sollte irgend ein loading spinner angezeigt werden. @diluno gibts da schon was?)
imageLoadError(error) {
console.log("Error loading image, retrying...");
var imageId = this.imageId;
setTimeout(function() {
error.target.src = 'https://backend.bikeable.ch/api/v1/photos/' + imageId + '?store=small';
}, 1000);
}
@mgschwend store=small funktioniert so nicht. Bei folgendem Beispiel kannst du sehen, dass store=small das Bild in Originalgrösse zurückgibt, was hier nicht gewollt ist:
/api/v1/photos/d7i4PuffTcNchm8k8?store=small
Es gibt schon einen Endpoint, der denn store
Parameter akzeptiert, der endpoint hat aber eine andere URL:
/cfs/files/images/d7i4PuffTcNchm8k8?store=small
Der sollte aber nicht benützt werden, sondern derjenige, der in der Dokumentation ist, und der geht so:
Bug fixed in backend.