mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-23 18:05:59 +03:00
Extract HttpPusher to its own file
This commit is contained in:
parent
768df330b5
commit
d3d17ebbcb
4 changed files with 79 additions and 62 deletions
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Copyright (c) 2022 The Matrix.org Foundation C.I.C.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.matrix.android.sdk.api.session.pushers
|
||||
|
||||
data class HttpPusher(
|
||||
/**
|
||||
* This is a unique identifier for this pusher. The value you should use for
|
||||
* this is the routing or destination address information for the notification,
|
||||
* for example, the APNS token for APNS or the Registration ID for GCM. If your
|
||||
* notification client has no such concept, use any unique identifier. Max length, 512 chars.
|
||||
*/
|
||||
val pushkey: String,
|
||||
|
||||
/**
|
||||
* The application id
|
||||
* This is a reverse-DNS style identifier for the application. It is recommended
|
||||
* that this end with the platform, such that different platform versions get
|
||||
* different app identifiers. Max length, 64 chars.
|
||||
*/
|
||||
val appId: String,
|
||||
|
||||
/**
|
||||
* This string determines which set of device specific rules this pusher executes.
|
||||
*/
|
||||
val profileTag: String,
|
||||
|
||||
/**
|
||||
* The preferred language for receiving notifications (e.g. "en" or "en-US").
|
||||
*/
|
||||
val lang: String,
|
||||
|
||||
/**
|
||||
* A human readable string that will allow the user to identify what application owns this pusher.
|
||||
*/
|
||||
val appDisplayName: String,
|
||||
|
||||
/**
|
||||
* A human readable string that will allow the user to identify what device owns this pusher.
|
||||
*/
|
||||
val deviceDisplayName: String,
|
||||
|
||||
/**
|
||||
* The URL to use to send notifications to. MUST be an HTTPS URL with a path of /_matrix/push/v1/notify.
|
||||
*/
|
||||
val url: String,
|
||||
|
||||
/**
|
||||
* If true, the homeserver should add another pusher with the given pushkey and App ID in addition
|
||||
* to any others with different user IDs. Otherwise, the homeserver must remove any other pushers
|
||||
* with the same App ID and pushkey for different users.
|
||||
*/
|
||||
val append: Boolean,
|
||||
|
||||
/**
|
||||
* true to limit the push content to only id and not message content
|
||||
* Ref: https://matrix.org/docs/spec/push_gateway/r0.1.1#homeserver-behaviour
|
||||
*/
|
||||
val withEventIdOnly: Boolean
|
||||
)
|
|
@ -107,61 +107,4 @@ interface PushersService {
|
|||
* Get the current pushers.
|
||||
*/
|
||||
fun getPushers(): List<Pusher>
|
||||
|
||||
data class HttpPusher(
|
||||
|
||||
/**
|
||||
* This is a unique identifier for this pusher. The value you should use for
|
||||
* this is the routing or destination address information for the notification,
|
||||
* for example, the APNS token for APNS or the Registration ID for GCM. If your
|
||||
* notification client has no such concept, use any unique identifier. Max length, 512 chars.
|
||||
*/
|
||||
val pushkey: String,
|
||||
|
||||
/**
|
||||
* The application id
|
||||
* This is a reverse-DNS style identifier for the application. It is recommended
|
||||
* that this end with the platform, such that different platform versions get
|
||||
* different app identifiers. Max length, 64 chars.
|
||||
*/
|
||||
val appId: String,
|
||||
|
||||
/**
|
||||
* This string determines which set of device specific rules this pusher executes.
|
||||
*/
|
||||
val profileTag: String,
|
||||
|
||||
/**
|
||||
* The preferred language for receiving notifications (e.g. "en" or "en-US").
|
||||
*/
|
||||
val lang: String,
|
||||
|
||||
/**
|
||||
* A human readable string that will allow the user to identify what application owns this pusher.
|
||||
*/
|
||||
val appDisplayName: String,
|
||||
|
||||
/**
|
||||
* A human readable string that will allow the user to identify what device owns this pusher.
|
||||
*/
|
||||
val deviceDisplayName: String,
|
||||
|
||||
/**
|
||||
* The URL to use to send notifications to. MUST be an HTTPS URL with a path of /_matrix/push/v1/notify.
|
||||
*/
|
||||
val url: String,
|
||||
|
||||
/**
|
||||
* If true, the homeserver should add another pusher with the given pushkey and App ID in addition
|
||||
* to any others with different user IDs. Otherwise, the homeserver must remove any other pushers
|
||||
* with the same App ID and pushkey for different users.
|
||||
*/
|
||||
val append: Boolean,
|
||||
|
||||
/**
|
||||
* true to limit the push content to only id and not message content
|
||||
* Ref: https://matrix.org/docs/spec/push_gateway/r0.1.1#homeserver-behaviour
|
||||
*/
|
||||
val withEventIdOnly: Boolean
|
||||
)
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ package org.matrix.android.sdk.internal.session.pushers
|
|||
import androidx.lifecycle.LiveData
|
||||
import androidx.work.BackoffPolicy
|
||||
import com.zhuinden.monarchy.Monarchy
|
||||
import org.matrix.android.sdk.api.session.pushers.HttpPusher
|
||||
import org.matrix.android.sdk.api.session.pushers.Pusher
|
||||
import org.matrix.android.sdk.api.session.pushers.PushersService
|
||||
import org.matrix.android.sdk.internal.database.mapper.asDomain
|
||||
|
@ -58,15 +59,15 @@ internal class DefaultPushersService @Inject constructor(
|
|||
.executeBy(taskExecutor)
|
||||
}
|
||||
|
||||
override fun enqueueAddHttpPusher(httpPusher: PushersService.HttpPusher): UUID {
|
||||
override fun enqueueAddHttpPusher(httpPusher: HttpPusher): UUID {
|
||||
return enqueueAddPusher(httpPusher.toJsonPusher())
|
||||
}
|
||||
|
||||
override suspend fun addHttpPusher(httpPusher: PushersService.HttpPusher) {
|
||||
override suspend fun addHttpPusher(httpPusher: HttpPusher) {
|
||||
addPusherTask.execute(AddPusherTask.Params(httpPusher.toJsonPusher()))
|
||||
}
|
||||
|
||||
private fun PushersService.HttpPusher.toJsonPusher() = JsonPusher(
|
||||
private fun HttpPusher.toJsonPusher() = JsonPusher(
|
||||
pushKey = pushkey,
|
||||
kind = "http",
|
||||
appId = appId,
|
||||
|
|
|
@ -21,7 +21,7 @@ import im.vector.app.core.di.ActiveSessionHolder
|
|||
import im.vector.app.core.resources.AppNameProvider
|
||||
import im.vector.app.core.resources.LocaleProvider
|
||||
import im.vector.app.core.resources.StringProvider
|
||||
import org.matrix.android.sdk.api.session.pushers.PushersService
|
||||
import org.matrix.android.sdk.api.session.pushers.HttpPusher
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import kotlin.math.abs
|
||||
|
@ -55,7 +55,7 @@ class PushersManager @Inject constructor(
|
|||
currentSession.pushersService().addHttpPusher(createHttpPusher(pushKey))
|
||||
}
|
||||
|
||||
private fun createHttpPusher(pushKey: String) = PushersService.HttpPusher(
|
||||
private fun createHttpPusher(pushKey: String) = HttpPusher(
|
||||
pushKey,
|
||||
stringProvider.getString(R.string.pusher_app_id),
|
||||
profileTag = DEFAULT_PUSHER_FILE_TAG + "_" + abs(activeSessionHolder.getActiveSession().myUserId.hashCode()),
|
||||
|
|
Loading…
Reference in a new issue