2021-05-13 20:03:07 +02:00
using System ;
using System.Collections.Generic ;
using TINK.MultilingualResources ;
namespace TINK.Model
{
/// <summary> Holds information about TINKApp development. </summary>
public class WhatsNew
{
private static readonly Version AGBMODIFIEDBUILD = new Version ( 3 , 0 , 131 ) ;
/// <summary>Change of of think App.</summary>
private Dictionary < Version /* when change was introduced*/ , string > WhatsNewMessages = new Dictionary < Version , string >
{
{
new Version ( 3 , 0 , 0 , 115 ) ,
"Benutzeroberfläche verbessert.\r\n\r\n"
} ,
{
new Version ( 3 , 0 , 120 ) ,
"Verbesserung: Keine Fehler mehr beim schnellen Tippen.\r\n" +
"Offlineanzeige Stationen/ Räderinfo.\r\n\r\n"
} ,
{
AGBMODIFIEDBUILD ,
"Neue Seiten eingebaut\r\n" +
"-zum erstmaligem Registrieren\r\n" +
"-zur Verwaltung des Benutzerkontos\r\n" +
"-zum Zurücksetzen des Passworts\r\n" +
"\r\n" +
"Anzeige Verbindungsstatus auf den Seiten\r\n" +
"-Kartenansicht Fahrradstandorte\r\n" +
"-Fahrräder an Station\r\n" +
"-Meine Fahrräder\r\n\r\n"
} ,
{
new Version ( 3 , 0 , 137 ) ,
"Verschiedene kleine Verbesserungen und Korrekturen.\r\n"
} ,
{
new Version ( 3 , 0 , 141 ) ,
"Erste I LOCK IT Unterstützung.\r\n" +
"Erweiterte Optionen: Zwei Schlosssimulationen.\r\n"
} ,
{
new Version ( 3 , 0 , 142 ) ,
"Sharee Server verfügbar.\r\n"
} ,
{
new Version ( 3 , 0 , 143 ) ,
"Geolocation wird am Gerät abgefragt.\r\n" +
"Erweiterte Optionen: Genauer Standort kann abgefragt werden, Standortsimulation verfügbar.\r\n"
} ,
{
new Version ( 3 , 0 , 144 ) ,
"Diverse Fehler behoben.\r\n" +
"Erweiterte Optionen: Texte Auswahlboxen für Copri-Server, Schlosssteuerung und Geolocation verständlicher gemacht.\r\n"
} ,
{
new Version ( 3 , 0 , 145 ) ,
"Kleine Fehler behoben.\r\n" +
"Erweiterte Option ein/ ausschalten \"Karte auf aktuelle Position ausrichten\" hinzugefügt.\r\n" +
"Für gemietete Räder ausserhalb der Reichweite wird Knof \"Schloss suchen\" angezeigt."
} ,
{
new Version ( 3 , 0 , 146 ) ,
"Fehler behoben: Aktion Schloss schließen wird jetzt durchgeführt.\r\n" +
"Benennung: \"Miete weiterführen\" -> \"Miete fortsetzen\".\r\n"
} ,
{
new Version ( 3 , 0 , 147 ) ,
"Erste prototypische Unterstützung des ILOCKIT-Schlosses.\r\n"
} ,
{
new Version ( 3 , 0 , 148 ) ,
"Schloss-Guid wird an CORI bei Buchung übermittelt.\r\n"
} ,
{
new Version ( 3 , 0 , 149 ) ,
"Schlösser mit neuem Advertisement-Name ISHAREIT+XXXXXXX unterstützt.\r\n"
} ,
{
new Version ( 3 , 0 , 150 ) ,
"Verbesserung: Schlossstatus wird nach Öffnen/ Schließen abgefragt.\r\n"
} ,
{
new Version ( 3 , 0 , 151 ) ,
"Verbesserungen:\r\n" +
"Erweiterte Optionen: Auswahl, ob log-Dateien auf internem Speicher oder SD-Karte abgelegt werden, ist konfigurierbar.\r\n" +
"Leistung: Suche nach Bluetooth Schlössern deutlich beschleunigt.\r\n" +
"Kleine Textkorrekturen.\r\n." +
"Fehlerbehebung: Schloss kann direkt nach Reservierung geöffnet werden.\r\n"
} ,
{
new Version ( 3 , 0 , 152 ) ,
"Verbesserungen: Aufforderung zum Aktivieren von Bluetooth beim Öffnen der Seiten Meine Räder und Räder an Station implementiert.\r\n" +
"Fehlerbehebung: Seite Meine Räder kann auch geöffnet werden, ohne dass Räder reserviert oder gemietet sein müssen.\r\n"
} ,
{
new Version ( 3 , 0 , 153 ) ,
"Stabilität erhöht.\r\n"
} ,
{
new Version ( 3 , 0 , 154 ) ,
"Stationen in Freiburg werden angezeigt.\r\n"
} ,
{
new Version ( 3 , 0 , 155 ) ,
"Schlosssuche verbessert.\r\n"
} ,
{
new Version ( 3 , 0 , 156 ) ,
"Abschalten von Sounds und Alarm für offene, reservierte Räder hinzugefügt.\r\n" +
"Kleine Fehler behoben.\r\n"
} ,
{
new Version ( 3 , 0 , 157 ) ,
"Versenden von Mail mit Diagnoseinformation funktioniert wieder.\r\n" +
"Stationen werden nicht mehr fälschlicherweise ausgeblendet nach Verlassen von Einstellungsseite.\r\n" +
"Absturz bei minimieren von App behoben.\r\n" +
"Stabilität Bluetoothverbindung bei erstmaligem Verbinden verbessert.\r\n" +
"Stabilität Bluetoothverbindung bei wiederholtem Verbinden verbessert.\r\n" +
"Absturz bei Drehen von Smartdevice behoben.\r\n" +
"Absturz bei minimieren von App behoben.\r\n"
} ,
{
new Version ( 3 , 0 , 158 ) ,
"Bugfix: Auf Endgerät mit deutscher Sprache werden Texte wieder auf deutsch angezeigt.\r\n" +
"Erweiterung: Räderinfo für TINK-Räder werden nur noch bei Anmeldung mit TINK-Konto angezeigt.\r\n" +
"Erweiterung: Anwendergruppeninfotext \"TINK\" bzw. \"Konrad\" wird nur noch angezeigt, wenn Konto ein TINK- bzw. Konradrechte hat.\r\n"
} ,
{
new Version ( 3 , 0 , 159 ) ,
"Bugfix: Asynchrone Bluetooth Aktualisierung für Android entfernt, da nicht unterstützt.\r\n"
} ,
{
new Version ( 3 , 0 , 162 ) ,
"App umbenannt von TINKApp in sharee.bike.\r\n"
} ,
{
new Version ( 3 , 0 , 163 ) ,
"Schlossstatus wird an COPRI übermittelt.\r\n"
} ,
{
new Version ( 3 , 0 , 164 ) ,
"Wechsel Standard Lock-Umsetzung: GUID-Verbindungsaufbau wird statt Scan benutzt.\r\n" +
"Datenquellen für \"Passwort vergessen\", \"Persönliche Daten Verwalten\", \"Datenschutz\" und \"AGB\" aktualisiert.\r\n"
} ,
{
new Version ( 3 , 0 , 165 ) ,
"Menüstruktur überarbeitet.\r\n"
} ,
{
new Version ( 3 , 0 , 167 ) ,
"Standardeinstellung geändert: Kartenansicht wird per Default auf aktuelle Position zentriert.\r\n"
} ,
{
new Version ( 3 , 0 , 168 ) ,
"Konfigurierbaren Connect Timeout eingebaut.\r\n" +
"Impressum, Radinfo und Tarifinfo wird von Server geladen.\r\n" +
"Adressen für share.bike erweitert.\r\n"
} ,
{
new Version ( 3 , 0 , 169 ) ,
"Verschiedene Fehler behoben.\r\n"
} ,
{
new Version ( 3 , 0 , 170 ) ,
"Fehler behoben: nach Sequenz Rad Zurückgeben-Resverieren-Mieten ist wieder Verbindung zu Schloss möglich.\r\n" +
"Zielplatform Android 10-Q"
} ,
{
new Version ( 3 , 0 , 171 ) ,
"Fehler behoben: nach Sequenz von Homescreen wieder App aktivieren wenn Meine Räder offen ist für nicht mehr zu Crash.\r\n" +
"Fehlermeldung verbessert für den Fall, dass Bluetooth abgeschaltet ist."
} ,
{
new Version ( 3 , 0 , 172 ) ,
"Spezielle Fehler Schloss blockiert beim Öffnen/ Schließen und Fahrrad in Bewegung beim Schließen werden in Alert angezeigt.\r\n" +
"Fehlerzustände werden detaillierter in Alerts angezeigt.\r\n" +
"Überprüfung, ob von COPRI gelieferte GUID gültig ist für bekannte Schlösser.\r\n" +
"Überprüfung, dass Seed nur einmalig verwendet werden.\r\n" +
"Verschiedene kleinere Verbesserungen."
} ,
{
new Version ( 3 , 0 , 173 ) ,
"Fehlerzustände werden detaillierter in Alerts angezeigt.\r\n" +
"Aktualisierung auf Android 10."
} ,
{
new Version ( 3 , 0 , 174 ) ,
"Fehlerkorrketur: GPS-Korrdianten werden länderinvariant übertragen. \r\n" +
"Nutzer mit erweiterten Rechten: Alarm- und Soundeinstellungen können verwaltet werden."
} ,
{
new Version ( 3 , 0 , 175 ) ,
"Fehlerkorrektur: Nach Bluetooth-Wiederverbindung kann Schloss wieder geöffnet und geschlossen werden."
} ,
{
new Version ( 3 , 0 , 176 ) ,
"Wiederholen-/ Abbrechen-Schleife beim Verbinden mit Schlössern umgesetzt. Beim Wiederholen wird die Timeoutzeit jeweils verdoppelt bis zum Faktor vier.\r\n" +
"Kein Neustart mehr notwendig nach Änderung der Timeouts."
} ,
{
new Version ( 3 , 0 , 177 ) ,
"Beim Schließen des Schlosses wird geänderter Zustand an COPRI übermittelt.\r\n" +
"Beim Miete beenden, ohne dass unmittelbar voher das Schloss zu geschlossen wurde, werden keine Koordinaten an COPRI übermittelt.\r\n" +
"Meldungen zu nichkritische Fehlern werden in der Statuszeile angezeigt. "
} ,
{
new Version ( 3 , 0 , 178 ) ,
"Bei Fehlern bei Radrückgabe Fehlermeldung verbessert.\r\n" +
"Activity Indicator (Sanduhr) eingebaut.\r\n" +
"Timeout von 3 auf 5 Sekunden erhöht insbesonders für standard Lock-Umsetzung Live-Scan."
} ,
{
new Version ( 3 , 0 , 179 ) ,
"Verbesserte Fehlermeldungen bei Statusaktualisierung und Radrückgabe.\r\n" +
"Fehlerbehebung: Alter Geoloationinformation wird korrekt übertragen.\r\n" +
"Optimierung Benutzung Geolocationcache."
} ,
{
new Version ( 3 , 0 , 180 ) ,
"Akkufüllstand wir an COPRI übermittelt beim Schloss öffnen."
} ,
{
new Version ( 3 , 0 , 190 ) ,
"Erste Version für iOS."
} ,
{
new Version ( 3 , 0 , 191 ) ,
"Für Seiten \"Fahrradstandorte\", \"Meine Räder\" und \"Räder an Station\":\r\n" +
"- Activity Indicator (Sanduhr) eingebaut\r\n" +
"- Statusmeldungen eingebaut\r\n" +
"Karte wird initial auf Verleistationen zentriert.\r\n" +
"Geschwindikgeitsverbesserungen und Fehler behoben."
} ,
{
new Version ( 3 , 0 , 192 ) ,
"Erweiterung: Benutzerfreundliche Fehlermeldung für Szenario\r\n" +
"-Rückgabe außerhalb von Station\r\n" +
"-Rückgabe ohne GPS-Info\r\n" +
"Standortabfrage bei Radrückgabe von bereits verschlossenem Rad, wenn Schloss in Bluetoothreichweite ist.\r\n" +
"Fehlerbehebung: Passwort-Vergessen Funktionaliät wieder verfügbar.\r\n" +
"Kontakt-Seite aktualisiert (Telefonnummer, Mail, ...)."
} ,
{
new Version ( 3 , 0 , 193 ) ,
"Erweiterte Benutzerrechte können selektiv akiviert werden.\r\n" +
"Verschiedene Umbenennungen."
} ,
{
new Version ( 3 , 0 , 194 ) ,
"Fehlerkorrektur: Wenn kein Benutzer angemeldet ist werden nur noch öffentliche Stationen angezeigt.\r\n" +
"Master-Detail Elemente werden in sharee.bike- Farbe angezeigt."
} ,
{
new Version ( 3 , 0 , 195 ) ,
"Fehlerkorrektur: Android action bar an sharee.bike- Farbenschema angepasst."
} ,
{
new Version ( 3 , 0 , 196 ) ,
"Fehlerkorrektur: Registrieren-Link korrigiert.\r\n" +
"\"Kontakt\"-Seite überarbeitet."
} ,
{
new Version ( 3 , 0 , 197 ) ,
"Android: App ist nicht mehr verfügbar Geräte ohne BluetoothLE/ ohne GPS.\r\n" +
"iOS:\r\n" +
"- Bugfix: Nicht mehr benötigtes Recht \"Standort im Hintergrund\" entfernt.\r\n" +
"- Schreibfehler behoben.\r\n" +
"Fehlerhandling bei Benutzung von mehr als acht Geräte verbessert."
} ,
{
new Version ( 3 , 0 , 198 ) ,
"Fehlermeldungen angepasst.\r\n"
} ,
{
new Version ( 3 , 0 , 199 ) ,
"Radbeschreibung auf sharee.bike angepasst.\r\n" +
"iOS: Berechtigungsfehler behoben."
} ,
{
new Version ( 3 , 0 , 200 ) ,
"Titel von Seite Fahrradstandort verbessert.\r\n" +
"Statusmeldungen verbessert."
} ,
{
new Version ( 3 , 0 , 201 ) ,
"iOS: Darstellung verbessert.\r\n" +
"Weitere Teile der App englischsprachig verfügbar."
} ,
{
new Version ( 3 , 0 , 202 ) ,
"Kleinere Verbesserrungen bezüglich Stabilität und Benutzbarkeit.\r\n"
} ,
{
new Version ( 3 , 0 , 203 ) ,
AppResources . ChangeLog3_0_203
} ,
{
new Version ( 3 , 0 , 204 ) ,
AppResources . ChangeLog3_0_204
} ,
{
new Version ( 3 , 0 , 205 ) ,
AppResources . ChangeLog3_0_205
} ,
{
new Version ( 3 , 0 , 206 ) ,
AppResources . ChangeLog3_0_206
} ,
{
new Version ( 3 , 0 , 207 ) ,
AppResources . ChangeLog3_0_207
} ,
{
new Version ( 3 , 0 , 208 ) ,
2021-06-26 20:57:55 +02:00
AppResources . ChangeLog3_0_208 // Minor fixes.
2021-05-13 20:03:07 +02:00
} ,
{
new Version ( 3 , 0 , 209 ) ,
AppResources . ChangeLog3_0_209
} ,
{
new Version ( 3 , 0 , 214 ) ,
AppResources . ChangeLog3_0_214
} ,
{
new Version ( 3 , 0 , 215 ) ,
AppResources . ChangeLog3_0_215
} ,
{
new Version ( 3 , 0 , 216 ) ,
AppResources . ChangeLog3_0_216
} ,
{
new Version ( 3 , 0 , 217 ) ,
AppResources . ChangeLog3_0_217
} ,
{
new Version ( 3 , 0 , 218 ) ,
2021-06-26 20:57:55 +02:00
AppResources . ChangeLog3_0_208
2021-05-13 20:03:07 +02:00
} ,
{
new Version ( 3 , 0 , 219 ) ,
AppResources . ChangeLog3_0_219
} ,
{
new Version ( 3 , 0 , 220 ) ,
AppResources . ChangeLog3_0_220
} ,
{
new Version ( 3 , 0 , 222 ) ,
AppResources . ChangeLog3_0_222
2021-06-26 20:57:55 +02:00
} ,
{
new Version ( 3 , 0 , 223 ) ,
AppResources . ChangeLog3_0_208
} ,
{
new Version ( 3 , 0 , 224 ) ,
AppResources . ChangeLog3_0_224
} ,
{
new Version ( 3 , 0 , 225 ) ,
AppResources . ChangeLog3_0_208
} ,
{
new Version ( 3 , 0 , 226 ) ,
AppResources . ChangeLog3_0_226
} ,
{
new Version ( 3 , 0 , 227 ) ,
AppResources . ChangeLog3_0_227
} ,
{
new Version ( 3 , 0 , 228 ) ,
AppResources . ChangeLog3_0_208
} ,
{
new Version ( 3 , 0 , 231 ) ,
AppResources . ChangeLog3_0_231
} ,
{
new Version ( 3 , 0 , 232 ) ,
AppResources . ChangeLog3_0_232
} ,
{
new Version ( 3 , 0 , 234 ) ,
AppResources . ChangeLog3_0_234
} ,
{
new Version ( 3 , 0 , 235 ) ,
AppResources . ChangeLog3_0_235
} ,
{
new Version ( 3 , 0 , 236 ) ,
AppResources . ChangeLog3_0_236
} ,
{
new Version ( 3 , 0 , 237 ) ,
AppResources . ChangeLog3_0_237
} ,
{
new Version ( 3 , 0 , 238 ) ,
AppResources . ChangeLog3_0_231
2021-07-12 19:30:14 +02:00
} ,
{
new Version ( 3 , 0 , 239 ) ,
AppResources . ChangeLog3_0_239
2021-07-14 23:36:41 +02:00
} ,
{
new Version ( 3 , 0 , 240 ) ,
AppResources . ChangeLog3_0_240
2021-07-20 23:06:09 +02:00
} ,
{
new Version ( 3 , 0 , 241 ) ,
AppResources . ChangeLog3_0_241
2021-07-22 22:41:35 +02:00
} ,
{
new Version ( 3 , 0 , 242 ) ,
AppResources . ChangeLog3_0_242
2021-05-13 20:03:07 +02:00
}
} ;
/// <summary> Manges the whats new information.</summary>
/// <param name="currentVersion">Current version of the app.</param>
/// <param name="shownInVersion">Null or version in which whats new dialog was shown last.</param>
public WhatsNew (
Version currentVersion ,
Version lastVersion ,
Version shownInVersion )
{
WasShownVersion = shownInVersion ;
LastVersion = lastVersion ;
CurrentVersion = currentVersion ;
}
/// <summary> Retruns a new WhatsNew object with property was shown set to true. </summary>
/// <returns></returns>
public WhatsNew SetWasShown ( )
{
return new WhatsNew ( CurrentVersion , LastVersion , CurrentVersion ) ;
}
/// <summary> Holds the information in which version of the app the whats new dialog has been shown.</summary>
private Version WasShownVersion { get ; }
/// <summary> Holds the information in which version of the app the whats new dialog has been shown.</summary>
private Version CurrentVersion { get ; }
private Version LastVersion ;
/// <summary> Holds information whether whats new page was already shown or not.</summary>
public bool IsShowRequired
{
get
{
if ( CurrentVersion = = null )
{
// Unexpected state detected.
return false ;
}
if ( LastVersion = = null )
{
// Initial install detected.
return false ;
}
return ( WasShownVersion ? ? LastVersion ) < CurrentVersion ;
}
}
/// <summary> True if info about modified agb has to be displayed. </summary>
public bool IsShowAgbRequired = > ( WasShownVersion ? ? AGBMODIFIEDBUILD ) < AGBMODIFIEDBUILD ;
/// <summary> Get the whats new text depening of version gap.</summary>
public string WhatsNewText
{
get
{
if ( CurrentVersion = = null )
{
// Unexpected state detected.
return string . Empty ;
}
if ( LastVersion = = null )
{
// Initial install detected. All is new.
return string . Empty ;
}
var effectiveWasShownVersion = WasShownVersion
? ? LastVersion ; // Upgrade from version without whats new dialog detected.
var whatsNew = string . Empty ;
foreach ( var l_oInfo in WhatsNewMessages )
{
if ( effectiveWasShownVersion > = l_oInfo . Key )
{
// What new info for this version entry was already shown.
continue ;
}
if ( l_oInfo . Key > CurrentVersion )
{
// This whats new info entry does not yet apply to current version.
continue ;
}
whatsNew + = $"<p><b>{l_oInfo.Key}</b><br/>{l_oInfo.Value}</p>" ;
}
return whatsNew ;
}
}
}
}