Skip to content

Commit

Permalink
Merge pull request #198 from bounswe/mobile
Browse files Browse the repository at this point in the history
feat(mobile): Milestone 3
  • Loading branch information
Elifnurdeniz authored May 17, 2024
2 parents 4ecda05 + ae7e68e commit 7604eb1
Show file tree
Hide file tree
Showing 15 changed files with 1,290 additions and 297 deletions.
55 changes: 53 additions & 2 deletions mobile/searchitect/app/_layout.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,48 @@
// import React from 'react';
// import { createStackNavigator } from '@react-navigation/stack';
// import BuildingWiki from './wikiPages/buildingWiki';
// import StyleWiki from './wikiPages/styleWiki';
// import ArchitectWiki from './wikiPages/architectWiki';
// import GuestFeedPage from './guestFeedPage';
// import Landing from './landing';
// import LandingSearch from './landingSearch';
// import LoginScreen from './auth/login';
// import RegisterScreen from './auth/register';
// import Feed from './feed';

// const Stack = createStackNavigator();

// export default function Layout() {
// console.log("Layout run");
// return (
// <Stack.Navigator
// screenOptions={{
// headerStyle: {
// backgroundColor: '#f4511e',
// },
// headerTintColor: '#fff',
// headerTitleStyle: {
// fontWeight: 'bold',
// },
// }}>
// {/* Optionally configure static options outside the route.*/}

// <Stack.Screen name="wikiPages/buildingWiki" component={BuildingWiki} options={{headerShown: false}} />
// <Stack.Screen name="wikiPages/styleWiki" component={StyleWiki} options={{headerShown: false}} />
// <Stack.Screen name="wikiPages/architectWiki" component={ArchitectWiki} options={{headerShown: false}} />

// <Stack.Screen name="guestFeedPage" component={GuestFeedPage} options={{headerShown: false}} />

// <Stack.Screen name="landing" component={Landing} options={{headerShown: false}} />
// <Stack.Screen name="landingSearch" component={LandingSearch} options={{headerShown: false}} />

// <Stack.Screen name="auth/login" component={LoginScreen} options={{headerShown: false}} />
// <Stack.Screen name="auth/register" component={RegisterScreen} options={{headerShown: false}} />
// <Stack.Screen name="feed" component={Feed} options={{headerShown: false}} />
// </Stack.Navigator>
// );
// }

import { Stack } from 'expo-router';

export default function Layout() {
Expand All @@ -16,12 +61,18 @@ export default function Layout() {
}}>
{/* Optionally configure static options outside the route.*/}

<Stack.Screen name="wikiPages/buildingWiki" options={{headerShown: false}} />
<Stack.Screen name="wikiPages/styleWiki" options={{headerShown: false}} />
<Stack.Screen name="wikiPages/architectWiki" options={{headerShown: false}} />

<Stack.Screen name="guestFeedPage" options={{headerShown: false}} />


<Stack.Screen name="landing" options={{headerShown: false}} />
<Stack.Screen name="landingImage" options={{headerShown: false}} />
<Stack.Screen name="landingSearch" options={{headerShown: false}} />

<Stack.Screen name="auth/login" options={{headerShown: false}} />
<Stack.Screen name="auth/register" options={{headerShown: false}} />
<Stack.Screen name="feed" options={{headerShown: false}} />

</Stack>
);
Expand Down
309 changes: 262 additions & 47 deletions mobile/searchitect/app/api.ts
Original file line number Diff line number Diff line change
@@ -1,46 +1,266 @@
// api.ts

import axios from 'axios';

// const BASE_URL = 'http://10.0.2.2:8000/';
const BASE_URL = 'http://165.232.66.11:8000/';



export const registerUser = async (userData: { username: string; email: string; password: string }): Promise<RegisterResponse> => {
try {
console.log(userData);
console.log(`${BASE_URL}signup/`);
const response = await axios.post<RegisterResponse>(`${BASE_URL}signup/`, userData);
console.log(response.status);
return response.data;
} catch (error) {
console.log(error)
// console.log(response)
// throw error.response.data;
}
};

export const loginUser = async (credentials: { username: string; password: string }): Promise<LoginResponse> => {
try {
const response = await axios.post<LoginResponse>(`${BASE_URL}login/`, credentials);
return response.data;
} catch (error) {
console.log(error)
// throw error.response.data;
}
};

export const searchQuery = async (query: string) => {
try {
console.log({query})
const response = await axios.post(`${BASE_URL}search/`, {query: query});
return response.data;
} catch (error) {
console.log(error)
// throw error.response.data;
}
};
const BASE_URL = 'http://10.0.2.2:8000/';

export const registerUser = (userData: { username: string; email: string; password: string }): Promise<RegisterResponse> => {
return new Promise((resolve, reject) => {
axios.post<RegisterResponse>(`${BASE_URL}signup/`, userData)
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const loginUser = (credentials: { username: string; password: string }): Promise<LoginResponse> => {
return new Promise((resolve, reject) => {
axios.post<LoginResponse>(`${BASE_URL}login/`, credentials)
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const searchQuery = (query: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}search/`, { query: query })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const getBuildingView = (entityId: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}building/`, { entity_id: entityId })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const getArchitectView = (entityId: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}architect/`, { entity_id: entityId })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const getStyleView = (entityId: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}style/`, { entity_id: entityId })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const getPostsByIds = (postId: number): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}get_posts_by_ids/`, { post_id: postId })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const updateUserProfile = (profileData: { username: string; email: string; phone_number: string; bio: string }): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}update_user_profile/`, profileData)
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const getUserProfile = (username: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.get(`${BASE_URL}user_profile/`, { params: { username } })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const createPost = (postData: { title: string; text: string; image_url: string; tag_name: string }): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}create_post/`, postData)
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const likePost = (postId: number): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}like_post/`, { post_id: postId })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const getLikeBack = (postId: number): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}get_like_back/`, { post_id: postId })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const commentPost = (commentData: { post_id: number; comment_text: string }): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}comment_post/`, commentData)
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const bookmarkPost = (postId: number): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}bookmark_post/`, { post_id: postId })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const followUser = (username: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}follow_user/`, { username })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const unfollowUser = (username: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}unfollow_user/`, { username })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const listFollowers = (username: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}list_followers/`, { username })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const listFollowing = (username: string): Promise<any> => {
return new Promise((resolve, reject) => {
axios.post(`${BASE_URL}list_following/`, { username })
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const getGuestFeed = (): Promise<any> => {
return new Promise((resolve, reject) => {
axios.get(`${BASE_URL}guest_feed/`)
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

export const getAuthFeed = (): Promise<any> => {
return new Promise((resolve, reject) => {
axios.get(`${BASE_URL}auth_feed/`)
.then(response => {
resolve(response.data);
})
.catch(error => {
console.error(error);
reject(error);
});
});
};

interface User {
id: number;
Expand All @@ -57,9 +277,4 @@ interface RegisterResponse {
interface LoginResponse {
token: string;
user: User;
}

// interface SearchResponse {
// query: string;
// }

}
2 changes: 1 addition & 1 deletion mobile/searchitect/app/auth/login.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const LoginScreen = () => {

loginUser({username: username,password:password}).then((res)=>{
console.log(res.token)
router.replace("feed")
router.replace("guestFeedPage")
}).catch((error)=>{
console.log(error)
});
Expand Down
Loading

0 comments on commit 7604eb1

Please sign in to comment.