Skip to content

Commit 75e880c

Browse files
author
Muammer Alkış
committed
bugs fixed
1 parent 5d68913 commit 75e880c

File tree

7 files changed

+92
-71
lines changed

7 files changed

+92
-71
lines changed

database/db.json

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"posts": [
3+
{
4+
"id": 1,
5+
"title": "json-server",
6+
"author": "typicode"
7+
}
8+
],
9+
"notes": [
10+
{
11+
"title": "Bir yeni mesaj",
12+
"date": "10.08.2021 23:04:24",
13+
"content": "Let’s share together :)",
14+
"id": 1628625851995
15+
},
16+
{
17+
"title": "New Note",
18+
"date": "10.08.2021 23:08:24",
19+
"content": "In quo pertineant non quo aut voluptates repudiandae sint et impetus quo ignorare. Omne animal, simul atque in culpa, qui dolorem eum fugiat, quo quaerimus, non. Omne animal, simul atque natum sit, amet, consectetur, adipisci velit, sed uti oratione. In oculis quidem se ipsam voluptatem, quia voluptas expetenda, fugiendus dolor sit, amet. Torquatos nostros? quos dolores suscipiantur maiorum dolorum fuga et expedita distinctio nam libero. Tum dicere exorsus est primum igitur, inquit, modo ista sis aequitate, quam nihil.",
20+
"id": 1628626102074
21+
}
22+
],
23+
"profile": {
24+
"name": "typicode"
25+
}
26+
}

db.json

-38
This file was deleted.

metro.config.js

+7
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,15 @@
44
*
55
* @format
66
*/
7+
const exclusionList = require('metro-config/src/defaults/exclusionList');
8+
9+
// exclusionList is a function that takes an array of regexes and combines
10+
// them with the default exclusions to return a single regex.
711

812
module.exports = {
13+
resolver: {
14+
blacklistRE: exclusionList([/database\/.*/]),
15+
},
916
transformer: {
1017
getTransformOptions: async () => ({
1118
transform: {

src/_core/baseRequest.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import axios from 'axios';
2+
import {Alert} from 'react-native';
3+
4+
axios.defaults.baseURL = 'http://localhost:3000/';
5+
6+
const baseRequest = {
7+
request: async (method, path, params) => {
8+
try {
9+
const result = await axios({
10+
method,
11+
url: path,
12+
data: params,
13+
});
14+
return result;
15+
} catch (e) {
16+
console.log(e);
17+
Alert.alert('Error', e.message, [{text: 'Ok'}]);
18+
}
19+
},
20+
get: path => baseRequest.request('GET', path),
21+
post: (path, params) => baseRequest.request('POST', path, params),
22+
put: (path, params) => baseRequest.request('PUT', path, params),
23+
delete: (path, params) => baseRequest.request('DELETE', path, params),
24+
};
25+
export default baseRequest;

src/screens/DetailScreen.js

+17-24
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, {useLayoutEffect, useState} from 'react';
1+
import React, {useLayoutEffect, useState, useEffect} from 'react';
22
import {
33
View,
44
Text,
@@ -12,15 +12,13 @@ import {
1212
Platform,
1313
Alert,
1414
} from 'react-native';
15-
import {useEffect} from 'react/cjs/react.development';
1615
import Ionicons from 'react-native-vector-icons/Ionicons';
1716
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
1817

1918
import colors from '../utils/colors';
20-
import axios from 'axios';
19+
import baseRequest from '../_core/baseRequest';
2120

2221
const DetailScreen = ({route, navigation}) => {
23-
const baseUrl = 'http://localhost:3000/';
2422

2523
const [title, setTitle] = useState('New Note');
2624
const [date, setDate] = useState();
@@ -65,27 +63,22 @@ const DetailScreen = ({route, navigation}) => {
6563
}, [route]);
6664

6765
const saveChanges = async () => {
68-
try {
69-
let result;
70-
if (route.params) {
71-
result = await axios.put(baseUrl + 'notes/' + id, {
72-
title,
73-
date: new Date().toLocaleString('tr-TR'),
74-
content,
75-
id: id,
76-
});
77-
} else {
78-
result = await axios.post(baseUrl + 'notes', {
79-
title,
80-
date: new Date().toLocaleString('tr-TR'),
81-
content,
82-
id: id,
83-
});
84-
}
85-
navigation.goBack();
86-
} catch (e) {
87-
Alert.alert('Error', e.message, [{text: 'Ok'}]);
66+
if (route.params) {
67+
await baseRequest.put('notes/' + id, {
68+
title,
69+
date: new Date().toLocaleString('tr-TR'),
70+
content,
71+
id: id,
72+
});
73+
} else {
74+
await baseRequest.post('notes', {
75+
title,
76+
date: new Date().toLocaleString('tr-TR'),
77+
content,
78+
id: id,
79+
});
8880
}
81+
navigation.goBack();
8982
};
9083

9184
const onChangeTitle = event => {

src/screens/HomeScreen/HomeScreen.js

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import axios from 'axios';
21
import React, {useEffect, useState} from 'react';
2+
import {useIsFocused} from '@react-navigation/native';
33
import {
44
View,
55
Text,
@@ -17,17 +17,18 @@ import Ionicons from 'react-native-vector-icons/Ionicons';
1717

1818
import NoteCard from './NoteCard';
1919
import colors from '../../utils/colors';
20+
import baseRequest from '../../_core/baseRequest';
2021

2122
const HomeScreen = ({navigation}) => {
22-
const baseUrl = 'http://localhost:3000/';
23+
const isFocused = useIsFocused();
2324

2425
const [loading, setLoading] = useState(true);
2526
const [refreshing, setRefreshing] = useState(false);
2627
const [notes, setNotes] = useState();
2728

2829
const getNotes = async () => {
2930
try {
30-
const data = await axios.get(baseUrl + 'notes');
31+
const data = await baseRequest.get('notes');
3132
setNotes(data.data);
3233
} catch (e) {
3334
Alert.alert('Error', 'An error occurred', [{text: 'Ok'}]);
@@ -46,11 +47,17 @@ const HomeScreen = ({navigation}) => {
4647
}
4748
}, [refreshing]);
4849

50+
useEffect(() => {
51+
if (isFocused) {
52+
getNotes();
53+
}
54+
}, [isFocused]);
55+
4956
const search = async event => {
5057
const text = event.nativeEvent.text;
5158

5259
try {
53-
const data = await axios.get(baseUrl + 'notes' + '?q=' + text);
60+
const data = await baseRequest.get('notes' + '?q=' + text);
5461
setNotes(data.data);
5562
} catch (e) {
5663
Alert.alert('Error', 'An error occurred while searching', [{text: 'Ok'}]);

src/screens/HomeScreen/NoteCard.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import axios from 'axios';
2-
import React, {useEffect} from 'react';
1+
import React from 'react';
32
import {View, Text, StyleSheet, TouchableOpacity, Alert} from 'react-native';
43

54
import colors from '../../utils/colors';
5+
import baseRequest from '../../_core/baseRequest';
66

77
const NoteCard = ({item, navigation, setRefreshing}) => {
8-
const baseUrl = 'http://localhost:3000/';
98
const {title, date, content, id} = item;
109

1110
const goDetail = () => {
@@ -23,7 +22,7 @@ const NoteCard = ({item, navigation, setRefreshing}) => {
2322
};
2423

2524
const deleteItem = async () => {
26-
await axios.delete(baseUrl + 'notes/' + id);
25+
await baseRequest.delete('notes/' + id);
2726
setRefreshing(true);
2827
};
2928

@@ -36,7 +35,9 @@ const NoteCard = ({item, navigation, setRefreshing}) => {
3635
<Text style={styles.title}>{title}</Text>
3736
<Text style={styles.date}>{date}</Text>
3837
<View style={styles.seperator} />
39-
<Text numberOfLines={4} style={styles.content}>{content}</Text>
38+
<Text numberOfLines={4} style={styles.content}>
39+
{content}
40+
</Text>
4041
</TouchableOpacity>
4142
);
4243
};

0 commit comments

Comments
 (0)