Página da disciplina de pos (Programação Orientada a Serviços) do curso técnico integrado de Informática para Internet.
para quem não tem o pnpm, npm, node
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash # install nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm install node # install node lastest version
npm i -g pnpm # instal pnpm
para quem tem o código no computador
### acessa diretório da aplicação
cd [nickname]/behappywith.me
git pull ### baixa o código-fonte
### Modifica informações do desenvolvedor
git config --global --unset user.name
git config --global --unset user.email
git config user.name "$NOME"
git config user.email "$EMAIL"
atom . ### abre o editor de código-fonte com o diretório atual
### Instala as bibliotecas do app
pnpm install
pnpm start
para quem NÃO tem o código no computador
### acessa diretório da aplicação
mkdir [nickname] && cd $_
### Mudar o [github-username] pelo seu nickname do GitHub
git clone https://github.com/[github-username]/behappy-frontend.git
mv behappy-frontend behappywith.me && cd $_
### Modifica informações do desenvolvedor
git config --global --unset user.name
git config --global --unset user.email
git config user.name "$NOME"
git config user.email "$EMAIL"
atom . ### abre o editor de código-fonte com o diretório atual
### Instala as bibliotecas do app
pnpm install
pnpm start
sessionStorage
): apaga as informações ao perder a sessão ou fechar o navegadorlocalStorage
): mantém dados após fechar navegadorem um outro terminal
### Tudo que iniciar com $ deverá ser substituído
### pelo valor correspondente
cd $DIRETORIO_APP
mkdir src/infrastructure
touch src/infrastructure/Repository.js
src/infrastructure/Repository.js
class Repository {
constructor() {
this.key = "behappy-user";
}
save = (json, callback) => {
let data = JSON.stringify(json);
window.localStorage.setItem(this.key, data);
callback();
};
load = (success, fail) => {
let data = window.localStorage.getItem(this.key);
let json = JSON.parse(data);
if (json) {
success(json);
} else {
fail(json);
}
};
}
export default Repository;
editar src/models/User.js
import Avatar from "./Avatar";
import Repository from "../infrastructure/Repository";
const repository = new Repository();
class User {
constructor() {
this.name = "";
this.gender = "";
this.avatar = Avatar.getAll()[0];
}
validName = () => {
return (
typeof this.name === "string" &&
this.name.length !== 0 &&
this.name.length <= 40
);
};
validGender = () => {
return ["m", "f"].some(param => {
return this.gender === param;
});
};
save = callback => {
repository.save(this, callback);
};
static load = (success, fail) => {
repository.load(json => {
let user = new User();
user.name = json.name;
user.gender = json.gender;
user.avatar = new Avatar(json.avatar.index, json.avatar.description);
success(user);
}, fail);
};
toString() {
return `${this.name}, ${this.avatar.toString()}`;
}
}
export default User;
entendendo a nova versão de App.js, sequenciando os passos:
undefined
) e o componente NovoUsuario será exibido.renderNewUser, user.save
).setState()
implica em uma nova renderização, NovoUsuario deixará de ser exibido, dando lugar a uma simples <div>
com os dados do usuário cadastro.src/App.js
import React, { Component } from "react";
import "./App.css";
import Header from "./components/Header";
import NewUser from "./components/NewUser";
import Toast from "./components/Toast";
import User from "./models/User";
class App extends Component {
constructor(props) {
super(props);
User.load(
user => {
this.state = { user: user };
},
() => {
this.state = { user: undefined };
}
);
}
messageToNewUser(user) {
let gender = user.gender === "m" ? "o" : "a";
this.refs.toast.success(`Seja bem vind${gender} ${user.name}!`);
}
renderNewUser() {
let user = this.state.user;
if (user) {
let style = {
marginTop: "140px",
textAlign: "center"
};
return (
<div style={style}>
<b>
Usuário obtido do <i>localStorage</i>
</b>
<br />
{user.toString()}
</div>
);
} else {
return (
<NewUser
onSubmit={user => {
user.save(() => {
this.setState(
{
user: user
},
() => {
this.messageToNewUser(user);
}
);
});
}}
error={msg => this.refs.toast.error(msg)}
/>
);
}
}
render() {
return (
<div>
<Header />
{this.renderNewUser()}
<Toast ref="toast" />
</div>
);
}
}
export default App;
CTRL + C
git add
) no repositório localgit commit
) no repositório localgit pull
e git push
)# Fechar o servidor web
### 1. Pressionar CTRL+C
###
### 2. Adicionar arquivos novos e modificados no repositório local
git add src
### 3. Registrar mudanças no repositório local
git commit -m "$MSG"
### Publicar as mudanças no repositório remoto
git pull
git push
Just do it!!!