Render changelog.md instead of opening a webview #10

Closed
Ghost wants to merge 6 commits from (deleted):changelog_screen into master
Showing only changes of commit 80e8262489 - Show all commits

View file

@ -1,47 +1,381 @@
import React from 'react';
import Markdown from "react-native-markdown-display";
import {withTheme} from "react-native-paper";
// @flow
import * as React from 'react';
import {Card, Text, Title, withTheme} from 'react-native-paper';
import {FlatList, StyleSheet} from "react-native";
import {View} from "react-native-animatable";
type PropsType = {};
type VersionType = {
bug_fix: Array<string>,
dev_notes: Array<string>,
news: Array<string>,
version: string,
releaseDate: string,
};
type JsonResponseType = {
currentVersion: VersionType,
nextVersion: VersionType,
previousVersions: Array<VersionType>,
}
type StateType = {
text: JsonResponseType,
}
const styles = StyleSheet.create({
title: {
fontSize: 20,
fontWeight: "bold",
textAlign: "center",
}
})
/**
* Read a text file and output the content
*
* Example Usage:
* var myTxt = require("./myTxt.txt");
* ...
* <TextFileReader
txt={myTxt}
* <MarkdownRender
txt={url_to_file}
/>
*/
class TextFileReader extends React.Component {
constructor(props) {
super(props);
this.state = {
text: ""
};
class MarkdownRender extends React.Component<PropsType, StateType> {
text: JsonResponseType = {
"currentVersion": {
"bug_fix": [
"- Correction de crash au démarrage sur certains appareils",
"- Correction de l'affichage de certains sites web"
],
"dev_notes": [
"- Force soloader 0.8.2"
],
"news": [
"- Mise à jour des écrans d'intro pour mieux refléter l'appli actuelle",
"- Déplacement du bouton *À propos* dans les paramètres",
"- Mode sombre par défaut parce que voilà"
],
"releaseData": "13/06/2020",
"version": "v3.0.7"
},
"nextVersion": {
"bug_fix": [
"- Correction d'un problème de connexion sur certains appareils android",
"- Correction de l'icône de notification sur Android",
"- Correction de bugs divers"
],
"dev_notes": [
"- Utilisation de prettier",
"- Utilisation de eslint avec config de airbnb",
"- Passage de React Native 62.2 à 63.2"
],
"news": [
"- Ajout d'une mascotte !",
"- Ajout de la sauvegarde des scores pour le jeu",
"- Ajout de la personnalisation de la dashboard",
"- Amélioration de l'intro",
"- Amélioration de la page du jeu",
"- Amélioration du visionnement des images",
"- Amélioration des traductions",
"- Amélioration des informations données par proxiwash",
"- Amélioration de la visibilité des services Amicale sans compte",
"- Améliorations générales de l'interface"
],
"releaseDate": "N/A",
"version": "v4.0.1"
},
"previousVersions": [
{
"bug_fix": [
],
"dev_notes": [
"- Passage de React Native 61.5 à 62.2",
"- Utilisation du moteur JS Hermes et proguard"
],
"news": [
"- Importante amélioration de la vitesse de démarrage et des performances",
"- Nouvelle réduction importante de la taille de l'application à télécharger et une fois installée"
],
"releaseDate": "28/05/2020",
"version": "v3.0.5"
},
{
"bug_fix": [
],
"dev_notes": [
"- Migration de Expo Managed Workflow à React Native Bare Workflow "
],
"news": [
"- Nouvelle barre de navigation !",
"- Nouveau planex tout beau tout neuf !",
"- Suppression du menu déroulant gauche",
"- Création d'une nouvelle catégorie dans la barre de navigation pour regrouper tous les services",
"- Ajout d'animations un peu partout parce que c'est joli et j'ai compris comment faire :D",
"- Ajout de la connexion au compte Amicale",
"- Ajout de la liste des clubs, des élections et du profil utilisateur à travers son compte Amicale",
"- Amélioration de la vitesse de démarrage et des performances",
"- Réduction importante de la taille de l'application à télécharger et une fois installée"
],
"releaseDate": "26/05/2020",
"version": "v3.0.0"
},
{
"bug_fix": [
],
"dev_notes": [
"- Utilisation de react-native-paper à la place de native base"
],
"news": [
"- Nouvelle interface !",
"- Amélioration des performances",
"- Amélioration de la vitesse de démarrage"
],
"releaseDate": "12/03/2020",
"version": "v2.0.0"
},
{
"bug_fix": [
"- Correction d'un problème d'affichage des détail du Proximo"
],
"dev_notes": [
],
"news": [
],
"releaseDate": "25/02/2020",
"version": "v1.5.2"
},
{
"bug_fix": [
],
"dev_notes": [
],
"news": [
"- Amélioration des performances",
"- Utilisation d'un tri des catégories du Proximo plus cohérent"
],
"releaseDate": "24/02/2020",
"version": "v1.5.1"
},
{
"bug_fix": [
],
"dev_notes": [
"- Passage de React Navigation 3 à 4",
"- Mise à jour d'autres librairies"
],
"news": [
"- Amélioration des performances de l'application",
"- Amélioration du menu gauche",
"- Ajout d'animations au changement d'écran",
"- Affichage de l'événement de l'accueil directement au clic, au lieu de juste amener sur la liste"
],
"releaseDate": "05/02/2020",
"version": "v1.5.0"
},
{
"bug_fix": [
"- Correction d'un crash lors du rafraichissement de planex",
"- Correction de bugs divers"
],
"dev_notes": [
],
"news": [
"- Ajout d'un accès rapide à BlueMind et l'ENT",
"- Amélioration de l'apparence du menu gauche",
"- Amélioration de l'affichage de Planex"
],
"releaseDate": "01/02/2020",
"version": "v1.4.0"
},
{
"bug_fix": [
"- Correction d'un problème de Planex mettant des cours sans couleur de fond"
],
"dev_notes": [
"- Yohan SIMARD rejoint le projet",
"- Passage de Expo SDK 33 à SDK 36",
"- Passage de React Native 59 à 61",
"- Mise à jour d'autres librairies"
],
"news": [
"- Ajout d'une barre de recherche dans Proximo",
"- Amélioration de l'interface Proximo",
"- Ajout d'un accès rapide au site des Élus Étudiants",
"- Amélioration du mode plein écran de Planex"
],
"releaseDate": "29/01/2020",
"version": "v1.3.3"
},
{
"bug_fix": [
"- Correction de quelques bugs"
],
"dev_notes": [
],
"news": [
"- Ajout du support du mode paysage dans l'écran Planex pour une vue de la semaine entière",
"- Ajout d'une page pour visualiser les salles en libre accès et réserver une Bib'Box",
"- Ajout de Tutor'INSA sur la dashboard pour un accès rapide",
"- Ouverture des sites web dans l'appli a la place d'utiliser le navigateur externe"
],
"releaseDate": "08/11/2019",
"version": "v1.3.0"
},
{
"bug_fix": [
"- - Corrections de bugs"
],
"dev_notes": [
],
"news": [
"- Ajout d'une dashboard sur la page d'accueil pour un accès rapide aux informations les plus importantes."
],
"releaseDate": "01/11/2019",
"version": "v1.2.0"
},
{
"bug_fix": [
],
"dev_notes": [
],
"news": [
"- Amélioration de la page Menu du RU",
"- Suppression de l'affichage des articles en rupture de stock dans la page Proximo",
"- Ajout de fonctionnalités de debug"
],
"releaseDate": "28/09/2019",
"version": "v1.1.1"
},
{
"bug_fix": [
],
"dev_notes": [
],
"news": [
"- Améliorations diverses de l'interface",
"- Ajout de l'écran planning des événements"
],
"releaseDate": "17/09/2019 ",
"version": "v1.1.0"
},
{
"bug_fix": [
"- Correction d'un crash sur l'écran du Proximo si l'utilisateur refuse les notifications"
],
"dev_notes": [
],
"news": [
"- Ajout de la possibilité de choisir un écran de démarrage"
],
"releaseDate": "13/09/2019",
"version": "v1.0.3"
},
{
"bug_fix": [
],
"dev_notes": [
],
"news": [
"- Amélioration de l'interface du Proximo",
"- Ajout de la possibilité de cliquer sur un article du Proximo pour afficher plus de détails"
],
"releaseDate": "12/09/2019",
"version": "v1.0.2"
},
{
"bug_fix": [
],
"dev_notes": [
],
"news": [
"- Première version officielle créée par Arnaud VERGNET"
],
"releaseDate": "27/08/2019",
"version": "v1.0.0"
}
]
}
componentDidMount() {
this.readTextFile(this.props.text);
}
readTextFile = file => {
let xhr = new XMLHttpRequest();
xhr.open("GET", file, true);
xhr.onreadystatechange = () => {
if(xhr.readyState === 4 && xhr.status === 200){
const allText = xhr.responseText;
this.setState({
text: allText
});
}
};
xhr.send(null);
};
render(){
/**
* Render json data inside a card
*
* @returns {*}
*/
getCardItemNews = ({item}: {item: VersionType}): React.Node => {
return (
<Markdown>{this.state.text}</Markdown>
<Card style={{ margin: 5}}>
<Card.Title
title={item.version}
subtitle={item.releaseDate}
/*
left={(iconProps: CardTitleIconPropsType): React.Node => (
<Avatar.Icon size={iconProps.size} icon="podium-gold"/>
)}
*/
/>
<Card.Content>
<Title>Nouveautés</Title>
<Text>
{item.news.map((txt: string): string => `${txt}\n`)}
</Text>
<Title>Correction des bugs</Title>
<Text>
{item.bug_fix.map((txt: string): string => `${txt}\n`)}
</Text>
</Card.Content>
</Card>
);
};
/**
* Extracts a key from the given item
*
* @param item The item to extract the key from
* @return {string} The extracted key
*/
keyExtractor = (item: VersionType): string => item.version;
render(): React.Node {
return (
<View style={{padding: 5}}>
<Text style={styles.title}>
Version actuelle
</Text>
{this.getCardItemNews({item: this.text.currentVersion})}
<Text style={styles.title}>
Versions précédentes
</Text>
<FlatList
data={this.text.previousVersions}
keyExtractor={this.keyExtractor}
renderItem={this.getCardItemNews}
/>
</View>
)
}
}
export default withTheme(TextFileReader);
export default withTheme(MarkdownRender);