Skip to content

Commit

Permalink
feat: contextに直接依存しないようにようにした
Browse files Browse the repository at this point in the history
  • Loading branch information
pantasystem committed Dec 21, 2023
1 parent 1787a8f commit 5dc9f9c
Show file tree
Hide file tree
Showing 13 changed files with 43 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,23 @@ package net.pantasystem.milktea.common_android.resource
import android.content.Context
import androidx.annotation.StringRes

sealed class StringSource {
abstract fun getString(context: Context): String
sealed interface StringSource {
fun build(getStringResource: GetStringResource): String

private data class Raw(private val text: String) : StringSource() {
override fun getString(context: Context): String = text
private data class Raw(private val text: String) : StringSource {

override fun build(getStringResource: GetStringResource): String = text
}

private data class Resource(@StringRes private val textRes: Int) : StringSource() {
override fun getString(context: Context): String = context.getString(textRes)
private data class Resource(@StringRes private val textRes: Int) : StringSource {

override fun build(getStringResource: GetStringResource): String = getStringResource(textRes)
}

private class FormatResource(@StringRes private val textRes: Int, private vararg val formatArgs: Any) : StringSource() {
override fun getString(context: Context): String {
val formatArgs = formatArgs.map { if (it is StringSource) it.getString(context) else it }.toTypedArray()
return context.getString(textRes, *formatArgs)
private class FormatResource(@StringRes private val textRes: Int, private vararg val formatArgs: Any) : StringSource {
override fun build(getStringResource: GetStringResource): String {
val formatArgs = formatArgs.map { if (it is StringSource) it.build(getStringResource) else it }.toTypedArray()
return getStringResource(textRes, *formatArgs)
}

override fun equals(other: Any?): Boolean {
Expand All @@ -39,8 +41,10 @@ sealed class StringSource {
}
}

private data class StringSourceList(private val list: List<StringSource>) : StringSource() {
override fun getString(context: Context): String = list.joinToString(separator = "") { it.getString(context) }
private data class StringSourceList(private val list: List<StringSource>) : StringSource {
override fun build(getStringResource: GetStringResource): String {
return list.joinToString(separator = "") { it.build(getStringResource) }
}
}

operator fun plus(other: StringSource): StringSource = StringSourceList(listOf(this, other))
Expand All @@ -52,4 +56,19 @@ sealed class StringSource {

operator fun invoke(@StringRes textRes: Int, vararg formatArgs: Any): StringSource = FormatResource(textRes, *formatArgs)
}
}

interface GetStringResource {
operator fun invoke(@StringRes textRes: Int): String

operator fun invoke(@StringRes textRes: Int, vararg formatArgs: Any): String

}

fun StringSource.getString(context: Context): String {
return build(object : GetStringResource {
override fun invoke(textRes: Int): String = context.getString(textRes)

override fun invoke(textRes: Int, vararg formatArgs: Any): String = context.getString(textRes, *formatArgs)
})
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package net.pantasystem.milktea.common_android.ui
import android.widget.TextView
import androidx.databinding.BindingAdapter
import net.pantasystem.milktea.common_android.resource.StringSource
import net.pantasystem.milktea.common_android.resource.getString

@BindingAdapter("stringSource")
fun TextView.setStringSource(source: StringSource?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import kotlinx.datetime.Instant
import net.pantasystem.milktea.common.glide.GlideApp
import net.pantasystem.milktea.common.ui.SimpleElapsedTime
import net.pantasystem.milktea.common_android.R
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.model.note.Visibility
import java.text.SimpleDateFormat
import java.util.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import net.pantasystem.milktea.common_android.resource.StringSource
import net.pantasystem.milktea.common_android.resource.getString

@Composable
fun getStringFromStringSource(src: StringSource): String {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import kotlinx.coroutines.flow.filterNot
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android_ui.tab.TabbedFlexboxListMediator
import net.pantasystem.milktea.model.note.reaction.LegacyReaction
import net.pantasystem.milktea.model.note.reaction.Reaction
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package net.pantasystem.milktea.note.timeline
import android.content.Context
import android.widget.Toast
import net.pantasystem.milktea.common.APIError
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android_ui.APIErrorStringConverter
import net.pantasystem.milktea.model.account.UnauthorizedException
import net.pantasystem.milktea.note.R
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.view.ViewGroup
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.databinding.BindingAdapter
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android.ui.VisibilityHelper.setMemoVisibility
import net.pantasystem.milktea.note.viewmodel.CwTextGenerator
import net.pantasystem.milktea.note.viewmodel.PlaneNoteViewData
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android_ui.report.ReportDialog
import net.pantasystem.milktea.note.NoteEditorActivity
import net.pantasystem.milktea.note.dialog.ConfirmDeleteAndEditNoteDialog
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat
import androidx.databinding.BindingAdapter
import com.bumptech.glide.Glide
import dagger.hilt.android.EntryPointAccessors
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android.ui.text.CustomEmojiDecorator
import net.pantasystem.milktea.common_android.ui.text.DrawableEmojiSpan
import net.pantasystem.milktea.common_android.ui.text.EmojiAdapter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package net.pantasystem.milktea.notification
import android.content.Context
import android.widget.Toast
import net.pantasystem.milktea.common.APIError
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android_ui.APIErrorStringConverter

class NotificationErrorHandler(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import net.pantasystem.milktea.app_store.account.AccountStore
import net.pantasystem.milktea.common.ui.ToolbarSetter
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android_ui.PageableFragmentFactory
import net.pantasystem.milktea.common_android_ui.user.FollowRequestsFragmentFactory
import net.pantasystem.milktea.notification.databinding.FragmentNotificationMentionBinding
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package net.pantasystem.milktea.user.followrequests
import android.content.Context
import android.widget.Toast
import net.pantasystem.milktea.common.APIError
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android_ui.APIErrorStringConverter
import net.pantasystem.milktea.model.account.UnauthorizedException
import net.pantasystem.milktea.note.R
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package net.pantasystem.milktea.user.profile
import android.content.Context
import android.widget.Toast
import net.pantasystem.milktea.common.APIError
import net.pantasystem.milktea.common_android.resource.getString
import net.pantasystem.milktea.common_android_ui.APIErrorStringConverter
import net.pantasystem.milktea.model.account.UnauthorizedException
import net.pantasystem.milktea.note.R
Expand Down

0 comments on commit 5dc9f9c

Please sign in to comment.