mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-18 21:10:02 +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.
|
* Get the current pushers.
|
||||||
*/
|
*/
|
||||||
fun getPushers(): List<Pusher>
|
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.lifecycle.LiveData
|
||||||
import androidx.work.BackoffPolicy
|
import androidx.work.BackoffPolicy
|
||||||
import com.zhuinden.monarchy.Monarchy
|
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.Pusher
|
||||||
import org.matrix.android.sdk.api.session.pushers.PushersService
|
import org.matrix.android.sdk.api.session.pushers.PushersService
|
||||||
import org.matrix.android.sdk.internal.database.mapper.asDomain
|
import org.matrix.android.sdk.internal.database.mapper.asDomain
|
||||||
|
@ -58,15 +59,15 @@ internal class DefaultPushersService @Inject constructor(
|
||||||
.executeBy(taskExecutor)
|
.executeBy(taskExecutor)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun enqueueAddHttpPusher(httpPusher: PushersService.HttpPusher): UUID {
|
override fun enqueueAddHttpPusher(httpPusher: HttpPusher): UUID {
|
||||||
return enqueueAddPusher(httpPusher.toJsonPusher())
|
return enqueueAddPusher(httpPusher.toJsonPusher())
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun addHttpPusher(httpPusher: PushersService.HttpPusher) {
|
override suspend fun addHttpPusher(httpPusher: HttpPusher) {
|
||||||
addPusherTask.execute(AddPusherTask.Params(httpPusher.toJsonPusher()))
|
addPusherTask.execute(AddPusherTask.Params(httpPusher.toJsonPusher()))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun PushersService.HttpPusher.toJsonPusher() = JsonPusher(
|
private fun HttpPusher.toJsonPusher() = JsonPusher(
|
||||||
pushKey = pushkey,
|
pushKey = pushkey,
|
||||||
kind = "http",
|
kind = "http",
|
||||||
appId = appId,
|
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.AppNameProvider
|
||||||
import im.vector.app.core.resources.LocaleProvider
|
import im.vector.app.core.resources.LocaleProvider
|
||||||
import im.vector.app.core.resources.StringProvider
|
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 java.util.UUID
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
@ -55,7 +55,7 @@ class PushersManager @Inject constructor(
|
||||||
currentSession.pushersService().addHttpPusher(createHttpPusher(pushKey))
|
currentSession.pushersService().addHttpPusher(createHttpPusher(pushKey))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createHttpPusher(pushKey: String) = PushersService.HttpPusher(
|
private fun createHttpPusher(pushKey: String) = HttpPusher(
|
||||||
pushKey,
|
pushKey,
|
||||||
stringProvider.getString(R.string.pusher_app_id),
|
stringProvider.getString(R.string.pusher_app_id),
|
||||||
profileTag = DEFAULT_PUSHER_FILE_TAG + "_" + abs(activeSessionHolder.getActiveSession().myUserId.hashCode()),
|
profileTag = DEFAULT_PUSHER_FILE_TAG + "_" + abs(activeSessionHolder.getActiveSession().myUserId.hashCode()),
|
||||||
|
|
Loading…
Add table
Reference in a new issue