Skip to content

Commit 4b2fd58

Browse files
committed
Merge branch 'develop' into BOOK-274-feature/#151
# Conflicts: # core/common/src/main/kotlin/com/ninecraft/booket/core/common/extensions/Context.kt
2 parents 6451482 + af02634 commit 4b2fd58

46 files changed

Lines changed: 906 additions & 157 deletions

File tree

Some content is hidden

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

app/src/main/AndroidManifest.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,18 @@
6060

6161
</activity>
6262

63+
<provider
64+
android:name="androidx.core.content.FileProvider"
65+
android:authorities="${applicationId}.provider"
66+
android:exported="false"
67+
android:grantUriPermissions="true">
68+
69+
<meta-data
70+
android:name="android.support.FILE_PROVIDER_PATHS"
71+
android:resource="@xml/provider_paths"
72+
tools:replace="android:resource" />
73+
</provider>
74+
6375
</application>
6476

6577
</manifest>
File renamed without changes.
File renamed without changes.

core/designsystem/src/main/res/xml/network_security_config.xml renamed to app/src/main/res/xml/network_security_config.xml

File renamed without changes.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<paths>
4+
<external-path
5+
name="external_files"
6+
path="." />
7+
<root-path
8+
name="root"
9+
path="." />
10+
</paths>
11+
</resources>
Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,69 @@
11
package com.ninecraft.booket.core.common.extensions
22

3+
import android.content.ContentValues
34
import android.content.Context
45
import android.content.Intent
56
import androidx.core.net.toUri
67
import com.ninecraft.booket.core.common.BuildConfig
8+
import android.graphics.Bitmap
9+
import android.os.Build
10+
import android.os.Environment
11+
import android.provider.MediaStore
12+
import androidx.compose.ui.graphics.ImageBitmap
13+
import androidx.compose.ui.graphics.asAndroidBitmap
14+
import androidx.core.app.ShareCompat
15+
import androidx.core.content.FileProvider
16+
import com.orhanobut.logger.Logger
17+
import java.io.File
18+
19+
@Suppress("TooGenericExceptionCaught")
20+
fun Context.externalShareForBitmap(bitmap: ImageBitmap) {
21+
try {
22+
val file = File(bitmap.saveToDisk(this))
23+
val uri = FileProvider.getUriForFile(this, "$packageName.provider", file)
24+
25+
ShareCompat.IntentBuilder(this)
26+
.setStream(uri)
27+
.setType("image/png")
28+
.startChooser()
29+
} catch (e: Exception) {
30+
Logger.e("[externalShareFoBitmap] message: ${e.message}")
31+
}
32+
}
33+
34+
@Suppress("TooGenericExceptionCaught")
35+
fun Context.saveImageToGallery(bitmap: ImageBitmap) {
36+
try {
37+
val fileName = "reed_record_${System.currentTimeMillis()}.png"
38+
val contentValues = ContentValues().apply {
39+
put(MediaStore.Images.Media.DISPLAY_NAME, fileName)
40+
put(MediaStore.Images.Media.MIME_TYPE, "image/png")
41+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
42+
put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_PICTURES)
43+
put(MediaStore.Images.Media.IS_PENDING, 1)
44+
}
45+
}
46+
47+
val imageUri =
48+
contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
49+
imageUri?.let { uri ->
50+
contentResolver.openOutputStream(uri)?.use { outputStream ->
51+
bitmap.asAndroidBitmap().compress(Bitmap.CompressFormat.PNG, 100, outputStream)
52+
}
53+
54+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
55+
contentValues.clear()
56+
contentValues.put(MediaStore.Images.Media.IS_PENDING, 0)
57+
contentResolver.update(uri, contentValues, null, null)
58+
}
59+
}
60+
} catch (e: Exception) {
61+
Logger.e("Failed to save image to gallery: ${e.message}")
62+
}
63+
}
764

865
fun Context.openPlayStore() {
9-
val intent = Intent(Intent.ACTION_VIEW, "market://details?id=${BuildConfig.PACKAGE_NAME}".toUri())
66+
val intent =
67+
Intent(Intent.ACTION_VIEW, "market://details?id=${BuildConfig.PACKAGE_NAME}".toUri())
1068
startActivity(intent)
1169
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.ninecraft.booket.core.common.extensions
2+
3+
import android.content.Context
4+
import android.graphics.Bitmap
5+
import androidx.compose.ui.graphics.ImageBitmap
6+
import androidx.compose.ui.graphics.asAndroidBitmap
7+
import java.io.File
8+
import java.io.FileOutputStream
9+
10+
fun ImageBitmap.saveToDisk(context: Context): String {
11+
val fileName = "shared_image_${System.currentTimeMillis()}.png"
12+
val cachePath = File(context.cacheDir, "images").also { it.mkdirs() }
13+
val file = File(cachePath, fileName)
14+
val outputStream = FileOutputStream(file)
15+
16+
asAndroidBitmap().compress(Bitmap.CompressFormat.PNG, 100, outputStream)
17+
outputStream.flush()
18+
outputStream.close()
19+
20+
return file.absolutePath
21+
}

core/common/src/main/kotlin/com/ninecraft/booket/core/common/extensions/Modifier.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import androidx.compose.material3.ripple
66
import androidx.compose.runtime.remember
77
import androidx.compose.ui.Modifier
88
import androidx.compose.ui.composed
9+
import androidx.compose.ui.draw.drawWithContent
10+
import androidx.compose.ui.graphics.layer.GraphicsLayer
11+
import androidx.compose.ui.graphics.layer.drawLayer
912
import androidx.compose.ui.platform.debugInspectorInfo
1013
import androidx.compose.ui.semantics.Role
1114
import com.ninecraft.booket.core.common.utils.MultipleEventsCutter
@@ -45,3 +48,9 @@ fun Modifier.clickableSingle(
4548
interactionSource = remember { MutableInteractionSource() },
4649
)
4750
}
51+
52+
fun Modifier.captureToGraphicsLayer(graphicsLayer: GraphicsLayer) =
53+
this.drawWithContent {
54+
graphicsLayer.record { this@drawWithContent.drawContent() }
55+
drawLayer(graphicsLayer)
56+
}

core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/theme/Typography.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ val pretendardFamily = FontFamily(
1717
Font(R.font.pretendard_semi_bold, FontWeight.SemiBold, FontStyle.Normal),
1818
)
1919

20+
val hakgyoansimFamily = FontFamily(
21+
Font(R.font.hakgyoansim_santteutbatang_m, FontWeight.Medium, FontStyle.Normal),
22+
)
23+
2024
private val defaultLineHeightStyle = LineHeightStyle(
2125
alignment = LineHeightStyle.Alignment.Center,
2226
trim = LineHeightStyle.Trim.None,
@@ -73,4 +77,13 @@ data class ReedTypography(
7377
// Caption
7478
val caption1Regular: TextStyle = style(12, 16, -0.12f, FontWeight.Normal),
7579
val caption2Regular: TextStyle = style(11, 14, -0.11f, FontWeight.Normal),
80+
81+
val quoteMedium: TextStyle = TextStyle(
82+
fontFamily = hakgyoansimFamily,
83+
lineHeightStyle = defaultLineHeightStyle,
84+
fontSize = 18.sp,
85+
lineHeight = 28.sp,
86+
letterSpacing = (-0.27f).sp,
87+
fontWeight = FontWeight.Medium,
88+
),
7689
)
Binary file not shown.

0 commit comments

Comments
 (0)