Skip to content

Commit e95d260

Browse files
Tomasz KądziołkaTomasz Kądziołka
authored andcommitted
Created logic for sharing code
1 parent 87109b4 commit e95d260

File tree

5 files changed

+34
-2
lines changed

5 files changed

+34
-2
lines changed

app/src/main/java/pl/tkadziolka/snipmeandroid/bridge/detail/DetailModel.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import pl.tkadziolka.snipmeandroid.domain.message.ErrorMessages
1212
import pl.tkadziolka.snipmeandroid.domain.reaction.GetTargetUserReactionUseCase
1313
import pl.tkadziolka.snipmeandroid.domain.reaction.SetUserReactionUseCase
1414
import pl.tkadziolka.snipmeandroid.domain.reaction.UserReaction
15+
import pl.tkadziolka.snipmeandroid.domain.share.ShareSnippetCodeUseCase
1516
import pl.tkadziolka.snipmeandroid.domain.snippet.GetSingleSnippetUseCase
1617
import pl.tkadziolka.snipmeandroid.domain.snippet.SaveSnippetUseCase
1718
import pl.tkadziolka.snipmeandroid.domain.snippets.Snippet
@@ -26,6 +27,7 @@ class DetailModel(
2627
private val getTargetReaction: GetTargetUserReactionUseCase,
2728
private val setUserReaction: SetUserReactionUseCase,
2829
private val saveSnippet: SaveSnippetUseCase,
30+
private val shareSnippet: ShareSnippetCodeUseCase,
2931
private val session: SessionModel
3032
) : ErrorParsable {
3133
private val disposables = CompositeDisposable()
@@ -95,6 +97,12 @@ class DetailModel(
9597
}
9698
}
9799

100+
fun share() {
101+
getSnippet()?.let {
102+
shareSnippet(it)
103+
}
104+
}
105+
98106
private fun changeReaction(newReaction: UserReaction) {
99107
// Immediately show change to user
100108
val previousState = getLoaded() ?: return

app/src/main/java/pl/tkadziolka/snipmeandroid/bridge/detail/DetailModelPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class DetailModelPlugin : ModelPlugin<Bridge.DetailModelBridge>(), Bridge.Detail
4646
}
4747

4848
override fun share() {
49-
TODO("Not yet implemented")
49+
model.share()
5050
}
5151

5252
private fun getData(viewState: DetailViewState): Bridge.DetailModelStateData {

app/src/main/java/pl/tkadziolka/snipmeandroid/di/ModelModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ import pl.tkadziolka.snipmeandroid.bridge.session.SessionModel
88
internal val modelModule = module {
99
single { SessionModel(get()) }
1010
single { MainModel(get(), get(), get(), get(), get(), get(), get()) }
11-
single { DetailModel(get(), get(), get(), get(), get(), get(), get()) }
11+
single { DetailModel(get(), get(), get(), get(), get(), get(), get(), get()) }
1212
}

app/src/main/java/pl/tkadziolka/snipmeandroid/di/UseCaseModule.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import pl.tkadziolka.snipmeandroid.domain.reaction.GetTargetUserReactionUseCase
1010
import pl.tkadziolka.snipmeandroid.domain.reaction.SetUserReactionUseCase
1111
import pl.tkadziolka.snipmeandroid.domain.share.ClearCachedShareUsersUseCase
1212
import pl.tkadziolka.snipmeandroid.domain.share.ShareInteractor
13+
import pl.tkadziolka.snipmeandroid.domain.share.ShareSnippetCodeUseCase
1314
import pl.tkadziolka.snipmeandroid.domain.share.ShareSnippetUseCase
1415
import pl.tkadziolka.snipmeandroid.domain.snippet.*
1516
import pl.tkadziolka.snipmeandroid.domain.snippets.GetSnippetsUseCase
@@ -45,6 +46,7 @@ internal val useCaseModule = module {
4546
factory { GetShareUsersUseCase(get(), get(), get(), get()) }
4647
factory { ClearCachedShareUsersUseCase(get()) }
4748
factory { ShareSnippetUseCase(get(), get(), get(), get()) }
49+
factory { ShareSnippetCodeUseCase(get()) }
4850
// Clipboard
4951
single { AddToClipboardUseCase(get()) }
5052
factory { GetFromClipboardUseCase(get()) }
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package pl.tkadziolka.snipmeandroid.domain.share
2+
3+
import android.content.Context
4+
import android.content.Intent
5+
import androidx.core.content.ContextCompat.startActivity
6+
import pl.tkadziolka.snipmeandroid.domain.snippets.Snippet
7+
8+
class ShareSnippetCodeUseCase(
9+
private val context: Context
10+
) {
11+
12+
operator fun invoke(snippet: Snippet) {
13+
val sendIntent: Intent = Intent().apply {
14+
action = Intent.ACTION_SEND
15+
putExtra(Intent.EXTRA_TEXT, snippet.code.raw)
16+
type = "text/plain"
17+
}
18+
19+
val shareIntent = Intent.createChooser(sendIntent, snippet.title)
20+
startActivity(context, shareIntent, null)
21+
}
22+
}

0 commit comments

Comments
 (0)