mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2024-11-05 10:36:30 +01:00
578 lines
24 KiB
C#
578 lines
24 KiB
C#
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),
|
|
AppResources.ChangeLog3_0_208 // Minor fixes.
|
|
},
|
|
{
|
|
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),
|
|
AppResources.ChangeLog3_0_208
|
|
},
|
|
{
|
|
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
|
|
},
|
|
{
|
|
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
|
|
},
|
|
{
|
|
new Version(3, 0, 239),
|
|
AppResources.ChangeLog3_0_239
|
|
},
|
|
{
|
|
new Version(3, 0, 240),
|
|
AppResources.ChangeLog3_0_240
|
|
},
|
|
{
|
|
new Version(3, 0, 241),
|
|
AppResources.ChangeLog3_0_241
|
|
},
|
|
{
|
|
new Version(3, 0, 242),
|
|
AppResources.ChangeLog3_0_242
|
|
},
|
|
{
|
|
new Version(3, 0, 243),
|
|
AppResources.ChangeLog3_0_243
|
|
},
|
|
{
|
|
new Version(3, 0, 244),
|
|
AppResources.ChangeLog3_0_231 // Minor improvements.
|
|
},
|
|
{
|
|
new Version(3, 0, 245),
|
|
AppResources.ChangeLog3_0_231 // Minor improvements.
|
|
},
|
|
{
|
|
new Version(3, 0, 246),
|
|
AppResources.ChangeLog3_0_231 // Minor improvements.
|
|
},
|
|
{
|
|
new Version(3, 0, 247),
|
|
AppResources.ChangeLog3_0_231 // Minor improvements.
|
|
},
|
|
{
|
|
new Version(3, 0, 248),
|
|
AppResources.ChangeLog3_0_231 // Minor improvements.
|
|
},
|
|
{
|
|
new Version(3, 0, 249),
|
|
AppResources.ChangeLog3_0_249 // Third-party components updated.
|
|
},
|
|
{
|
|
new Version(3, 0, 250),
|
|
AppResources.ChangeLog3_0_250 // Third-party components updated.
|
|
},
|
|
{
|
|
new Version(3, 0, 260),
|
|
// Same info as for version 3.0.251 and 3.0.252
|
|
AppResources.ChangeLog3_0_231 // Minor improvements.
|
|
},
|
|
{
|
|
new Version(3, 0, 263),
|
|
AppResources.ChangeLog3_0_263
|
|
},
|
|
{
|
|
new Version(3, 0, 264),
|
|
AppResources.ChangeLog3_0_264
|
|
},
|
|
{
|
|
new Version(3, 0, 265),
|
|
AppResources.ChangeLog3_0_265
|
|
},
|
|
{
|
|
new Version(3, 0, 266),
|
|
AppResources.ChangeLog3_0_266
|
|
},
|
|
{
|
|
new Version(3, 0, 276),
|
|
AppResources.ChangeLog3_0_276
|
|
}
|
|
};
|
|
|
|
/// <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;
|
|
}
|
|
}
|
|
}
|
|
}
|