Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ import eu.pretix.pretixscan.droid.PretixScan
import eu.pretix.pretixscan.droid.R
import eu.pretix.pretixscan.droid.databinding.ActivityKioskBinding
import eu.pretix.pretixscan.droid.hardware.LED
import io.sentry.Sentry
import kotlinx.coroutines.launch
import java.util.IllformedLocaleException
import java.util.Locale

Expand Down Expand Up @@ -83,6 +85,7 @@ class KioskActivity : BaseScanActivity() {
field = value
}
var lastTicketRequireAttention = false
var lastScanNonce: String? = null
var localizedContext: Context? = null
override var useOrderLocale = true

Expand Down Expand Up @@ -328,6 +331,7 @@ class KioskActivity : BaseScanActivity() {
setTemporaryLocale(result.locale!!)
}
lastTicketRequireAttention = result.isRequireAttention
lastScanNonce = result.nonce
var isPrintable = false
val mayBePrintable = (conf.printBadges &&
result.scanType != TicketCheckProvider.CheckInType.EXIT &&
Expand Down Expand Up @@ -499,9 +503,17 @@ class KioskActivity : BaseScanActivity() {
}
} else if (resultCode == 2) {
// Gate opened, but did not turn.
// TODO: Revert checkin?
if (conf.sounds) {
mediaPlayers[R.raw.error]?.start()
}
runOnUiThread {
backToStartHandler.postDelayed(backToStart, conf.timeAfterGateOpen.toLong())
annullCheckin()
binding.tvRejectedMessage.text = getString(R.string.kiosk_text_noentry)
binding.tvRejectedReason.visibility = View.VISIBLE
binding.tvRejectedReason.text = getString(R.string.kiosk_text_noentry_description)
state = KioskState.Rejected
updateUi()
backToStartHandler.postDelayed(backToStart, 5_000)
}
} else {
// gate opening failed
Expand All @@ -523,6 +535,26 @@ class KioskActivity : BaseScanActivity() {
}
}

fun annullCheckin() {
val nonce = lastScanNonce ?: return
bgScope.launch {
try {
val provider = (application as PretixScan).getCheckProvider(conf)
provider.annul(
conf.eventSelectionToMap(),
nonce,
"Turnstile did not turn"
)
} catch (e: Exception) {
// Nothing we can do, we already gave user feedback
Sentry.captureException(e)
if (BuildConfig.DEBUG) {
e.printStackTrace()
}
}
}
}


fun updateUi() {
binding.clWaitingForScan.visibility = View.GONE
Expand Down Expand Up @@ -820,4 +852,4 @@ class KioskActivity : BaseScanActivity() {
}
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ fun createSyncDatabase(
CheckInAdapter =
CheckIn.Adapter(
datetimeAdapter = dateAdapter,
local_annulledAdapter = dateAdapter,
),
ClosingAdapter =
Closing.Adapter(
Expand All @@ -46,6 +47,7 @@ fun createSyncDatabase(
),
QueuedCheckInAdapter = QueuedCheckIn.Adapter(
datetimeAdapter = dateAdapter,
annulledAdapter = dateAdapter,
),
ReceiptLineAdapter =
ReceiptLine.Adapter(
Expand Down
2 changes: 2 additions & 0 deletions pretixscan/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -204,4 +204,6 @@
<string name="kiosk_error_printing_failed">Printing failed</string>
<string name="kiosk_error_printing_failed_timeout">Printing failed by timeout</string>
<string name="kiosk_error_unknown_scan_result_type">Unknown Scan Result Type</string>
<string name="kiosk_text_noentry">No entry detected</string>
<string name="kiosk_text_noentry_description">Your ticket will be valid again shortly</string>
</resources>
2 changes: 1 addition & 1 deletion pretixscan/libpretixsync-repo
Submodule libpretixsync-repo updated 35 files
+39 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/api/PretixApi.kt
+6 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/api/ProxyApi.kt
+44 −14 libpretixsync/src/main/java/eu/pretix/libpretixsync/check/AsyncCheckProvider.kt
+32 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/check/OnlineCheckProvider.kt
+34 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/check/ProxyCheckProvider.kt
+13 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/check/TicketCheckProvider.kt
+2 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/models/CheckIn.kt
+1 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/models/Receipt.kt
+12 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/models/db/CheckInExtensions.kt
+1 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/models/db/ReceiptExtensions.kt
+1 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/sqldelight/ReceiptExtensions.kt
+1 −1 libpretixsync/src/main/java/eu/pretix/libpretixsync/sqldelight/ReceiptLineExtensions.kt
+1 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/BaseSingleObjectSyncAdapter.kt
+2 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/EventSyncAdapter.kt
+2 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/InvoiceSettingsSyncAdapter.kt
+1 −1 libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/OrderCleanup.kt
+6 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/OrderSyncAdapter.kt
+81 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/SettingsSyncAdapter.kt
+2 −0 libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/SubEventSyncAdapter.kt
+3 −3 libpretixsync/src/main/java/eu/pretix/libpretixsync/sync/SyncManager.java
+8 −1 libpretixsync/src/main/sqldelight/common/eu/pretix/libpretixsync/sqldelight/CheckIn.sq
+10 −3 libpretixsync/src/main/sqldelight/common/eu/pretix/libpretixsync/sqldelight/QueuedCheckIn.sq
+4 −2 libpretixsync/src/main/sqldelight/common/eu/pretix/libpretixsync/sqldelight/Receipt.sq
+1 −0 libpretixsync/src/main/sqldelight/common/migrations/117.sqm
+3 −0 libpretixsync/src/main/sqldelight/postgres/eu/pretix/libpretixsync/sqldelight/CheckIn.sq
+4 −1 libpretixsync/src/main/sqldelight/postgres/eu/pretix/libpretixsync/sqldelight/QueuedCheckIn.sq
+2 −1 libpretixsync/src/main/sqldelight/postgres/eu/pretix/libpretixsync/sqldelight/Receipt.sq
+5 −0 libpretixsync/src/main/sqldelight/postgres/migrations/118.sqm
+4 −1 libpretixsync/src/main/sqldelight/sqlite/eu/pretix/libpretixsync/sqldelight/CheckIn.sq
+4 −1 libpretixsync/src/main/sqldelight/sqlite/eu/pretix/libpretixsync/sqldelight/QueuedCheckIn.sq
+2 −1 libpretixsync/src/main/sqldelight/sqlite/eu/pretix/libpretixsync/sqldelight/Receipt.sq
+5 −0 libpretixsync/src/main/sqldelight/sqlite/migrations/118.sqm
+2 −2 libpretixsync/src/test/java/eu/pretix/libpretixsync/check/AsyncCheckProviderReusableMediumTest.kt
+45 −3 libpretixsync/src/test/java/eu/pretix/libpretixsync/check/AsyncCheckProviderTest.kt
+2 −0 libpretixsync/src/test/java/eu/pretix/libpretixsync/db/BaseDatabaseTest.java
Loading