Skip to content

Commit 6d61bc5

Browse files
committed
슈퍼 커밋~~
동아리 / 캠퍼스맵 컴포넌트 추가
1 parent 441a480 commit 6d61bc5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+8577
-5397
lines changed

app.config.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
const IS_BETA = process.env.APP_VARIANT === 'beta';
2+
13
export default ({ config }) => {
24
return {
35
...config,
6+
name: IS_BETA ? '공주대처럼β' : '공주대처럼',
47
android: {
58
...config.android,
6-
googleServicesFile: process.env.GOOGLE_SERVICES_JSON
9+
googleServicesFile: IS_BETA ? process.env.GOOGLE_SERVICES_JSON_BETA : process.env.GOOGLE_SERVICES_JSON,
10+
package: IS_BETA ? 'ac.knu.likeknu.beta' : 'ac.knu.likeknu'
711
},
812
ios: {
913
...config.ios,
10-
googleServicesFile: process.env.GOOGLE_SERVICE_INFO_PLIST
14+
googleServicesFile: IS_BETA ? process.env.GOOGLE_SERVICE_INFO_PLIST_BETA : process.env.GOOGLE_SERVICE_INFO_PLIST,
15+
bundleIdentifier: IS_BETA ? 'com.woopaca.likeknu.beta' : 'com.woopaca.likeknu'
1116
}
1217
};
1318
};

app.json

+27-17
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@
22
"expo": {
33
"name": "공주대처럼",
44
"slug": "like-knu",
5-
"version": "2.0.0",
5+
"version": "2.1.0",
66
"orientation": "portrait",
77
"icon": "./assets/icon.png",
88
"userInterfaceStyle": "automatic",
99
"assetBundlePatterns": [
1010
"**/*"
1111
],
1212
"ios": {
13-
"buildNumber": "57",
13+
"buildNumber": "63",
1414
"splash": {
1515
"image": "./assets/splash.png",
16-
"resizeMode": "contain",
1716
"backgroundColor": "#FFFFFF",
1817
"dark": {
1918
"image": "./assets/splash-dark.png",
@@ -36,14 +35,13 @@
3635
"appStoreUrl": "https://apps.apple.com/kr/app/%EA%B3%B5%EC%A3%BC%EB%8C%80%EC%B2%98%EB%9F%BC/id6499512208"
3736
},
3837
"android": {
39-
"versionCode": 57,
38+
"versionCode": 63,
4039
"adaptiveIcon": {
4140
"foregroundImage": "./assets/adaptive-icon.png",
4241
"backgroundColor": "#FFFFFF"
4342
},
4443
"splash": {
4544
"image": "./assets/splash.png",
46-
"resizeMode": "contain",
4745
"backgroundColor": "#FFFFFF",
4846
"dark": {
4947
"image": "./assets/splash-dark.png",
@@ -68,7 +66,10 @@
6866
"useFrameworks": "static"
6967
},
7068
"android": {
71-
"enableProguardInReleaseBuilds": true
69+
"enableProguardInReleaseBuilds": true,
70+
"extraMavenRepos": [
71+
"https://repository.map.naver.com/archive/maven"
72+
]
7273
}
7374
}
7475
],
@@ -87,10 +88,8 @@
8788
"skAdNetworkItems": [
8889
"cstr6suwn9.skadnetwork",
8990
"4fzdc2evr5.skadnetwork",
90-
"4pfyvq9l8r.skadnetwork",
9191
"2fnua5tdw4.skadnetwork",
9292
"ydx93a7ass.skadnetwork",
93-
"5a6flpkh64.skadnetwork",
9493
"p78axxw29g.skadnetwork",
9594
"v72qych5uu.skadnetwork",
9695
"ludvb6z3bs.skadnetwork",
@@ -99,43 +98,53 @@
9998
"c6k4g5qg8m.skadnetwork",
10099
"s39g8k73mm.skadnetwork",
101100
"3qy4746246.skadnetwork",
102-
"f38h382jlk.skadnetwork",
103101
"hs6bdukanm.skadnetwork",
102+
"mlmmfzh3r3.skadnetwork",
104103
"v4nxqhlyqp.skadnetwork",
105104
"wzmmz9fp6w.skadnetwork",
105+
"su67r6k2v3.skadnetwork",
106106
"yclnxrl5pm.skadnetwork",
107-
"t38b2kh725.skadnetwork",
108107
"7ug5zh24hu.skadnetwork",
109108
"gta9lk7p23.skadnetwork",
110109
"vutu7akeur.skadnetwork",
111110
"y5ghdn5j9k.skadnetwork",
112-
"n6fk4nfna4.skadnetwork",
113111
"v9wttpbfk9.skadnetwork",
114112
"n38lu8286q.skadnetwork",
115113
"47vhws6wlr.skadnetwork",
116114
"kbd757ywx3.skadnetwork",
117115
"9t245vhmpl.skadnetwork",
118-
"eh6m2bh4zr.skadnetwork",
119116
"a2p9lx4jpn.skadnetwork",
120117
"22mmun2rn5.skadnetwork",
121118
"4468km3ulz.skadnetwork",
122119
"2u9pt9hc89.skadnetwork",
123120
"8s468mfl3y.skadnetwork",
124-
"klf5c3l5u5.skadnetwork",
125121
"ppxm28t8ap.skadnetwork",
126-
"ecpz2srf59.skadnetwork",
127122
"uw77j35x4d.skadnetwork",
128123
"pwa73g5rt2.skadnetwork",
129-
"mlmmfzh3r3.skadnetwork",
130124
"578prtvx9j.skadnetwork",
131125
"4dzt52r2t5.skadnetwork",
126+
"tl55sbb4fm.skadnetwork",
132127
"e5fvkxwrpn.skadnetwork",
133128
"8c4e2ghe7u.skadnetwork",
134-
"zq492l623r.skadnetwork",
135129
"3rd42ekr43.skadnetwork",
136130
"3qcr597p9d.skadnetwork"
137131
]
138132
}
133+
],
134+
[
135+
"expo-location",
136+
{
137+
"locationAlwaysAndWhenInUsePermission": "더 나은 서비스를 제공하기 위해서 필요해요!😊",
138+
"locationAlwaysPermission": "더 나은 서비스를 제공하기 위해서 필요해요!😊",
139+
"locationWhenInUsePermission": "더 나은 서비스를 제공하기 위해서 필요해요!😊",
140+
"isAndroidForegroundServiceEnabled": true
141+
}
142+
],
143+
[
144+
"@mj-studio/react-native-naver-map",
145+
{
146+
"client_id": "pe2k6cam8k"
147+
}
139148
]
140149
],
141150
"scheme": "like-knu",
@@ -152,6 +161,7 @@
152161
},
153162
"updates": {
154163
"url": "https://u.expo.dev/e7aa67eb-52b1-48f3-85b7-9faee242f8e8"
155-
}
164+
},
165+
"newArchEnabled": true
156166
}
157167
}

app/(tabs)/_layout.tsx

+5-6
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ const TabLayout = () => {
1717
tabBar: {
1818
backgroundColor: colors[theme].container,
1919

20-
borderTopWidth: 0.5,
21-
borderLeftWidth: 0.5,
22-
borderRightWidth: 0.5,
20+
borderTopWidth: 1,
21+
borderLeftWidth: 1,
22+
borderRightWidth: 1,
2323
borderLeftColor: colors[theme].gray300,
2424
borderRightColor: colors[theme].gray300,
2525
borderTopColor: colors[theme].gray300,
26-
borderTopRightRadius: Platform.OS !== 'web' ? 25 : 0,
27-
borderTopLeftRadius: Platform.OS !== 'web' ? 25 : 0,
26+
borderTopRightRadius: 25,
27+
borderTopLeftRadius: 25,
2828

2929
paddingHorizontal: 10
3030
},
@@ -41,7 +41,6 @@ const TabLayout = () => {
4141
screenOptions={{
4242
tabBarStyle: styles.tabBar,
4343
headerShown: false,
44-
tabBarIconStyle: { marginTop: 8 },
4544
tabBarActiveTintColor: colors[theme].contrast,
4645
tabBarInactiveTintColor: colors[theme].gray200
4746
}}>

app/announcement/Announcement.tsx

-8
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,6 @@ const styles = StyleSheet.create({
9292
alignItems: 'center',
9393
justifyContent: 'space-between'
9494
},
95-
tabs: {
96-
flexDirection: 'row',
97-
alignItems: 'center',
98-
justifyContent: 'space-between',
99-
100-
paddingHorizontal: 20,
101-
borderBottomWidth: 0.3
102-
},
10395
bookmarkPressable: {
10496
padding: 4
10597
},

app/campus-map/CampusMap.tsx

+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
import SwitchingIcon from '@/assets/icons/arrow-light-arrow-left.svg';
2+
import MapMarkerIcon from '@/assets/icons/markers/singwan-student.svg';
3+
import BackHeader from '@/common/components/BackHeader';
4+
import PageLayout from '@/common/components/PageLayout';
5+
import { useCampus } from '@/common/contexts/CampusContext';
6+
import { useTheme } from '@/common/contexts/ThemeContext';
7+
import FontText from '@/common/text/FontText';
8+
import { Campuses, campusName } from '@/constants/campus';
9+
import colors, { campusColors } from '@/constants/colors';
10+
import { NaverMapMarkerOverlay, NaverMapView, NaverMapViewRef } from '@mj-studio/react-native-naver-map';
11+
import * as Location from 'expo-location';
12+
import { useEffect, useRef, useState } from 'react';
13+
import { ActionSheetIOS, Pressable, StyleSheet, View } from 'react-native';
14+
15+
export interface MarkerIconProps {
16+
campus: Campuses;
17+
name: string;
18+
type: string;
19+
}
20+
21+
const MarkerIcon = ({ campus, name, type }: MarkerIconProps) => {
22+
return (
23+
<View style={{ alignItems: 'center' }}>
24+
<MapMarkerIcon fill={campusColors[campus]} width={44} height={44} />
25+
</View>
26+
);
27+
};
28+
29+
const CampusMap = () => {
30+
const naverMapRef = useRef<NaverMapViewRef>(null);
31+
const { campus } = useCampus();
32+
const [selectedCampus, setSelectedCampus] = useState<Campuses>(campus!);
33+
const { theme } = useTheme();
34+
35+
useEffect(() => {
36+
Location.requestForegroundPermissionsAsync()
37+
.then(() => {
38+
});
39+
}, []);
40+
41+
const getCampusCenterCoordinateAndZoom = (campus: Campuses) => {
42+
switch (campus) {
43+
case Campuses.SINGWAN:
44+
return { latitude: 36.469096, longitude: 127.140598, zoom: 15.5 };
45+
case Campuses.CHEONAN:
46+
return { latitude: 36.8506431, longitude: 127.150501, zoom: 16 };
47+
case Campuses.YESAN:
48+
return { latitude: 36.670987, longitude: 126.859612, zoom: 16 };
49+
}
50+
};
51+
52+
useEffect(() => {
53+
const { latitude, longitude, zoom } = getCampusCenterCoordinateAndZoom(selectedCampus);
54+
naverMapRef.current?.animateCameraTo({
55+
latitude: latitude,
56+
longitude: longitude,
57+
zoom: zoom,
58+
easing: 'Fly'
59+
});
60+
}, [selectedCampus]);
61+
62+
return (
63+
<PageLayout edges={['top']}>
64+
<BackHeader title={
65+
<FontText fontWeight="600" style={{
66+
fontSize: 20,
67+
color: campusColors[selectedCampus]
68+
}}>{campusName[selectedCampus].name}</FontText>
69+
} button={
70+
<Pressable
71+
style={{ flexDirection: 'row', alignItems: 'center', gap: 4, paddingHorizontal: 2, paddingVertical: 6 }}
72+
onPress={() => {
73+
ActionSheetIOS.showActionSheetWithOptions({
74+
title: '캠퍼스를 선택하세요',
75+
options: Object.values(Campuses).map(campus => campusName[campus].name)
76+
.concat(['닫기']),
77+
cancelButtonIndex: Object.values(Campuses).length,
78+
cancelButtonTintColor: colors[theme].red
79+
}, index => {
80+
if (index === Object.values(Campuses).length) return;
81+
setSelectedCampus(Object.values(Campuses)[index]);
82+
});
83+
}}
84+
>
85+
<SwitchingIcon width={14} height={14} fill={colors[theme].gray100} />
86+
<FontText fontWeight="700" style={{ color: colors[theme].gray100, fontSize: 15 }}>캠퍼스 변경</FontText>
87+
</Pressable>
88+
} />
89+
<NaverMapView
90+
ref={naverMapRef}
91+
style={{ flex: 1 }}
92+
initialCamera={getCampusCenterCoordinateAndZoom(selectedCampus)}
93+
isShowZoomControls={false}
94+
minZoom={14}
95+
>
96+
<NaverMapMarkerOverlay
97+
latitude={36.469096}
98+
longitude={127.140598}
99+
caption={{
100+
text: '8공학관',
101+
color: colors.light.contrast,
102+
minZoom: 15,
103+
offset: -1,
104+
haloColor: colors.light.container
105+
}}
106+
>
107+
<MarkerIcon campus={selectedCampus} name={'아무거나'} type={'아무거나'} />
108+
</NaverMapMarkerOverlay>
109+
</NaverMapView>
110+
</PageLayout>
111+
);
112+
};
113+
114+
export default CampusMap;
115+
116+
const styles = StyleSheet.create({});

app/campus-map/MarkerFilter.tsx

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { View } from 'react-native';
2+
3+
export interface MarkerFilterProps {
4+
filter: any;
5+
setFilter: any;
6+
}
7+
8+
const MarkerFilter = ({ filter, setFilter }: MarkerFilterProps) => {
9+
return (
10+
<View>
11+
</View>
12+
);
13+
};
14+
15+
export default MarkerFilter;

app/campus-map/index.tsx

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import CampusMap from '@/app/campus-map/CampusMap';
2+
3+
const CampusMapPage = () => {
4+
return <CampusMap />
5+
};
6+
7+
export default CampusMapPage;

app/home/Home.tsx

+11-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import HomeAnnouncement from '@/app/home/components/HomeAnnouncement';
22
import HomeBus from '@/app/home/components/HomeBus';
33
import HomeCalendar from '@/app/home/components/HomeCalendar';
4+
import HomeCampusMapV2 from '@/app/home/components/HomeCampusMapV2';
45
import HomeHeader from '@/app/home/components/HomeHeader';
6+
import HomeLibraryV2 from '@/app/home/components/HomeLibraryV2';
57
import HomeMeal from '@/app/home/components/HomeMeal';
68
import HomeOpenChat from '@/app/home/components/HomeOpenChat';
7-
import HomeTaxiMate from '@/app/home/components/HomeTaxiMate';
9+
import HomeOpenChatV2 from '@/app/home/components/HomeOpenChatV2';
10+
import HomeTaxiMateV2 from '@/app/home/components/HomeTaxiMateV2';
11+
import HomeUnivClub from '@/app/home/components/HomeUnivClub';
12+
import HomeUnivClubV2 from '@/app/home/components/HomeUnivClubV2';
813
import HomeBannerAd from '@/common/ads/HomeBannerAd';
914
import PageLayout from '@/common/components/PageLayout';
1015
import { useTheme } from '@/common/contexts/ThemeContext';
@@ -78,9 +83,11 @@ const Home = () => {
7883
contentContainerStyle={styles.scrollView}
7984
showsVerticalScrollIndicator={false}
8085
>
81-
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 10 }}>
82-
<HomeOpenChat />
83-
<HomeTaxiMate />
86+
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
87+
<HomeOpenChatV2 />
88+
<HomeLibraryV2 />
89+
<HomeUnivClubV2 />
90+
<HomeCampusMapV2 />
8491
</View>
8592
<HomeAnnouncement />
8693
<HomeBus />

0 commit comments

Comments
 (0)