Render changelog.md instead of opening a webview using fetch #12
1 changed files with 366 additions and 32 deletions
|
@ -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> {
|
||||
|
||||
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
|
||||
});
|
||||
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"
|
||||
}
|
||||
};
|
||||
xhr.send(null);
|
||||
]
|
||||
}
|
||||
|
||||
/**
|
||||
* Render json data inside a card
|
||||
*
|
||||
* @returns {*}
|
||||
*/
|
||||
getCardItemNews = ({item}: {item: VersionType}): React.Node => {
|
||||
return (
|
||||
<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>
|
||||
);
|
||||
};
|
||||
|
||||
render(){
|
||||
/**
|
||||
* 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 (
|
||||
<Markdown>{this.state.text}</Markdown>
|
||||
<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);
|
Loading…
Reference in a new issue