Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let users = JSON.parse(localStorage.getItem('users')) || []
- export function configureFakeAPI () {
- let realFetch = window.fetch
- window.fetch = function (url, opts) {
- return new Promise((resolve, reject) => {
- setTimeout(() => {
- if (url.endsWith('/users/authenticate') && opts.method === 'POST') {
- let params = JSON.parse(opts.body)
- let filteredUsers = users.filter(user =>
- user.username === params.username &&
- user.password === params.password
- )
- if (filteredUsers.length) {
- let user = filteredUsers[0]
- let responseJson = {
- id: user.id,
- username: user.username
- }
- resolve({ ok: true, json: () => responseJson })
- } else {
- reject(new Error('Username or password is incorrect'))
- }
- return
- }
- if (url.endsWith('/users/register') && opts.method === 'POST') {
- let newUser = JSON.parse(opts.body)
- let duplicateUser = users.filter(user => user.username === newUser.username).length
- if (duplicateUser) {
- reject(new Error('Username "' + newUser.username + '" is already taken'))
- return
- }
- newUser.id = users.length
- ? Math.max(...users.map(user => user.id)) + 1
- : 1
- users.push(newUser)
- localStorage.setItem('users', JSON.stringify(users))
- resolve({ ok: true, json: () => ({}) })
- return
- }
- realFetch(url, opts)
- .then(response => resolve(response))
- }, 500)
- })
- }
- }
Add Comment
Please, Sign In to add comment