Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
ef7c124
feat: 캠퍼스맵 장소 상세 데이터 추가
ikseong00 Jul 11, 2026
a03510c
feat: 캠퍼스맵 화면 상태 모델 추가
ikseong00 Jul 11, 2026
2bce922
feat: 캠퍼스맵 UI 리소스 추가
ikseong00 Jul 11, 2026
e890f90
feat: 캠퍼스맵 기본 화면 UI 구현
ikseong00 Jul 11, 2026
b9ee673
feat: 캠퍼스맵 건물 상세 바텀시트 UI 구현
ikseong00 Jul 11, 2026
0b93783
feat: 캠퍼스맵 검색 화면 UI 구현
ikseong00 Jul 11, 2026
8faa0fe
feat: 캠퍼스맵 검색결과 바텀시트 UI 구현
ikseong00 Jul 11, 2026
97b5318
feat: 캠퍼스맵 UI 상태 연결
ikseong00 Jul 11, 2026
6f6f148
feat: 캠퍼스맵 검색 및 시트 흐름 연결
ikseong00 Jul 11, 2026
2eb2ed6
fix: 캠퍼스맵 전체 삭제 문구 통일
ikseong00 Jul 15, 2026
919c69d
refactor: 캠퍼스맵 실시간 검색 상태 이동
ikseong00 Jul 15, 2026
2c04547
fix: 캠퍼스맵 검색결과 스크롤 초기화
ikseong00 Jul 15, 2026
62609c2
fix: 캠퍼스맵 카테고리 검색 흐름 개선
ikseong00 Jul 15, 2026
5d3db00
refactor: 장소 운영시간 매퍼 import 정리
ikseong00 Jul 15, 2026
bdd770d
refactor: 캠퍼스맵 왼쪽 Chevron 아이콘 분리
ikseong00 Jul 15, 2026
4502bfd
refactor: 캠퍼스맵 상세 바텀시트 전달 구조 개선
ikseong00 Jul 15, 2026
496786d
fix: 캠퍼스맵 위치 권한 안내 흐름 개선
ikseong00 Jul 15, 2026
0f8f727
feat: 캠퍼스맵 지도 다크 모드 지원
ikseong00 Jul 20, 2026
d217445
chore: 캠퍼스 맵 컴포넌트의 하드코딩된 색상을 KuringTheme 컬러로 변경
ikseong00 Jul 20, 2026
ccaa85e
feat: 캠퍼스맵 지도 탐색 범위 제한
ikseong00 Jul 20, 2026
ff017b4
fix: 캠퍼스맵 검색 결과 선택 흐름 개선
ikseong00 Jul 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
Expand Down
13 changes: 13 additions & 0 deletions core/designsystem/src/main/res/drawable/ic_chevron_left_v2.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#00000000"
android:pathData="M14.5,17L9.5,12L14.5,7"
android:strokeColor="#262626"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:strokeWidth="2" />
</vector>
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ class PreferenceUtil(@ApplicationContext context: Context) {
get() = prefs.getInt(NOTIFICATION_PERMISSION_DIALOG_COUNT, 0)
set(value) = prefs.edit { putInt(NOTIFICATION_PERMISSION_DIALOG_COUNT, value) }

var hasRequestedCampusMapLocationPermission: Boolean
get() = prefs.getBoolean(CAMPUS_MAP_LOCATION_PERMISSION_REQUESTED, false)
set(value) = prefs.edit { putBoolean(CAMPUS_MAP_LOCATION_PERMISSION_REQUESTED, value) }

var clubInitialCategory: String
get() = prefs.getString(CLUB_INITIAL_CATEGORY, null) ?: ""
set(value) = run {
Expand Down Expand Up @@ -105,6 +109,7 @@ class PreferenceUtil(@ApplicationContext context: Context) {
const val SURVEY_2024_COMPLETE = "SURVEY_2024_COMPLETE"
const val LAST_DATE_ACADEMIC_EVENT_SHEET_SHOWN = "LAST_DATE_ACADEMIC_EVENT_SHEET_SHOWN"
const val NOTIFICATION_PERMISSION_DIALOG_COUNT = "NOTIFICATION_PERMISSION_DIALOG_COUNT"
const val CAMPUS_MAP_LOCATION_PERMISSION_REQUESTED = "CAMPUS_MAP_LOCATION_PERMISSION_REQUESTED"
const val CLUB_INITIAL_CATEGORY = "CLUB_INITIAL_CATEGORY"
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package com.ku_stacks.ku_ring.util

import android.Manifest
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.provider.Settings
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat

fun Context.checkHasNotificationPermission(): Boolean {
Expand All @@ -13,3 +18,33 @@ fun Context.checkHasNotificationPermission(): Boolean {
Manifest.permission.POST_NOTIFICATIONS,
) == PackageManager.PERMISSION_GRANTED
}

fun Context.checkHasLocationPermission(): Boolean =
ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION,
) == PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION,
) == PackageManager.PERMISSION_GRANTED

fun Activity.isLocationPermissionPermanentlyDenied(
hasRequestedPermission: Boolean,
): Boolean = hasRequestedPermission &&
!ActivityCompat.shouldShowRequestPermissionRationale(
this,
Manifest.permission.ACCESS_FINE_LOCATION,
) &&
!ActivityCompat.shouldShowRequestPermissionRationale(
this,
Manifest.permission.ACCESS_COARSE_LOCATION,
)

fun Context.openAppSettings() {
startActivity(
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
data = Uri.fromParts("package", packageName, null)
},
)
}
22 changes: 21 additions & 1 deletion data/domain/src/main/java/com/ku_stacks/ku_ring/domain/Place.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ data class Place (
val latitude: Double,
val longitude: Double,
val priority: Priority,
val number: Int? = null,
val iconUrl: String? = null,
val phone: String? = null,
val data: String? = null,
val imageUrl: String? = null,
val operationHours: PlaceOperationHours? = null,
val facilities: List<PlaceFacility> = emptyList(),
Comment on lines +11 to +17

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거 진짜...nullable...이어야하는거...맞죠...?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아직 API 미구현이라 임시 설정으로 해놨습니다!

) {
enum class Priority {
HIGH, MIDDLE, LOW
Expand All @@ -20,4 +27,17 @@ data class Place (
}
}
}
}
}

data class PlaceOperationHours(
val current: String? = null,
val semester: String? = null,
val vacation: String? = null,
)

data class PlaceFacility(
val name: String,
val category: String,
val location: String? = null,
val operationHours: PlaceOperationHours? = null,
)
Loading