Commit Graph

115 Commits

Author SHA1 Message Date
sandtechnology
4ce57f52a8
Add height, width, size and imageType attribute to Image class (#1548)
* Add height, width, size and imageType attribute to Image class
Close #1543 #1204 #1032

* Let ImageType enum code before the `Internals`, Also add @JvmStatic and OrNull version for match method

* Use runBIO and throws annotation for getImageInfo

* Add .kt suffix for MPP imagesImpl

* Return empty imageInfo for unsupported images

* Fix wrong file name

* apiDump

* Renaming MPP file instead of adding JvmName annotation

* Optimize readability and only use BIO at call-site

* Fix bug for detecting image type

* Detecting javax module for java 9+

* Clean up

* Disable some image types which not supported

* Use cross platform code to read images, readd support for apng

* Fix bug in reading image

* apiDump

* Fix bug in image reading and write unite test

* Fix wording

* Remove webp support and throws IllegalArgumentException for unsupported format

* Remove WEBP enum type

* Add unit test for unsupported image and correct comments

* Fix buffer input stream error when reading images

* Applying suggestions and fix jpg reading

* Add complete SOF decoding for jpg and clean up

* Caching jpg sof byte ranges

* Save `values()` as IMAGE_TYPE_ENUM_LIST for preventing clone operation

* Remove duplicated it
2021-09-16 04:38:59 +08:00
Him188
062b8766a2 Raise deprecation levels:
- RichMessageOrigin
- SingleMessage.Serializer
- ForceOfflineException
- MessageSubscribersBuilder.sentByTemp
- subscribeTempMessages
- TempMessageSubscribersBuilder
- TempMessageEvent
- TempMessagePostSendEvent
- TempMessagePreSendEvent

close #1296
2021-09-12 20:57:04 +08:00
Him188
238ec52eea Adapt for server time difference, let MessageSource.time refer to server time. Fixes 1519 2021-09-04 21:31:10 +08:00
Him188
5188d88483 Improve CheckableResponse 2021-09-04 19:36:16 +08:00
Him188
d727bae9d0 Add Either.left and Either.right 2021-09-02 16:03:32 +08:00
Him188
f239192677 Add trySafely 2021-09-01 20:05:05 +08:00
Him188
66999aadaf Migrate to Kotlin 1.5.30 and review dependencies:
- Remove redundant atomicfu-common
- Do not expose kotlinx-io and atomicfu
2021-09-01 18:52:36 +08:00
Him188
081e5d9b04 Use String constructor from Kotlin stdlib 2021-09-01 14:37:47 +08:00
Him188
f31f525343 Add util Array<Byte>.toUHexString 2021-09-01 13:55:39 +08:00
Him188
a1dba40f80 Add util CollectionDiff 2021-09-01 13:55:39 +08:00
Him188
f1c2393434 Add util readResource 2021-09-01 13:55:39 +08:00
Him188
f40659b1c7 Make TypeSafeMap() returns TypeSafeMap.EMPTY 2021-09-01 13:55:39 +08:00
Him188
1ffa9eb957 Add toString for TypeSafeMap implementations 2021-09-01 13:55:39 +08:00
Him188
f5fe442cc8 Add simple constructor for TypeSafeMap 2021-09-01 13:55:39 +08:00
Him188
f5b2dbc65d Avoid boxing in TypeSafeMap and support serialization 2021-09-01 13:55:39 +08:00
Him188
9c272ebf1e Migrate more transformers to NoticeProcessorPipeline 2021-09-01 13:55:39 +08:00
Him188
edf1bc9a2e Migrate more transformers to NoticeProcessorPipeline 2021-09-01 13:55:39 +08:00
Him188
41733e23ef Extract utils into multiple files 2021-09-01 13:55:39 +08:00
Him188
1b80fbc1e6 Redesign notice handling and introduce NoticeProcessorPipeline part 3:
- Extract `SyncController`;
- Add super type `ProtocolStruct` to `ProtoBuf` and `JceStruct` to standardize `NoticeProcessorPipeline.process`
- and other implementations for pipeline
2021-09-01 13:55:39 +08:00
Him188
09265190e9 Add UnconsumedNoticesAlerter and cleanup
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-09-01 13:55:39 +08:00
Him188
dc54679acb Redesign notice handling and introduce NoticeProcessorPipeline 2021-09-01 13:55:39 +08:00
Him188
497a458be4 Add TypeSafeMap 2021-09-01 13:55:39 +08:00
Him188
dad2d965ab Add contracts to cast, safeCast and castOrNull; Add uncheckedCast 2021-09-01 13:55:39 +08:00
Him188
45cc60c8e9 Fix loadService with fallback implementation 2021-08-11 15:24:32 +08:00
Him188
5950e9e1e8 Improve logging: use Log4j internally and support markers
Migrate usages of `MiraiLogger.create` to new API
apiDump for new logging
2021-08-11 15:24:32 +08:00
Him188
40bbab4b5e Use mirai TestOnly annotation in ServerListImpl.<init> 2021-08-08 15:09:21 +08:00
Him188
8d8aca3f1c Introduce Audio for new API, revert changes on Voice 2021-08-05 21:48:20 +08:00
Him188
cf1c5d4d81 Add utility loadService 2021-08-05 21:48:20 +08:00
Him188
f4adc1232f Add ComputeOnNullMutableProperty 2021-08-05 21:48:20 +08:00
Him188
482b62c0c3 Fix LateinitMutableProperty: ensure visibility 2021-07-31 17:50:40 +08:00
Him188
883518b1f1 Remove unused expressions 2021-07-23 12:58:09 +08:00
Him188
dfbe73da9a Do unwrap even if wrapper exception has suppressed exceptions 2021-07-22 11:48:11 +08:00
Him188
8d41e18cdc Improve Throwable.unwrap on Android: improve performance 2021-07-22 11:48:11 +08:00
Him188
2929db7f38 Implement Throwable.unwrap accordingly to the target platform. Fix #1404 2021-07-16 15:22:31 +08:00
Karlatemp
5b170ab63a Add HtmlEntity for decode html entity 2021-07-16 14:52:09 +08:00
Him188
dd606c3022 Improve performance of hexToBytes and simplify similar extensions 2021-07-07 15:00:28 +08:00
Him188
51d354c5e9 Improve Announcement logging 2021-07-06 19:12:45 +08:00
Him188
251bf3d9df Add JsonStruct to simplify deserialization 2021-07-06 19:12:45 +08:00
Him188
f0dc3cdf7e Add CheckableResult to standardize checks for deserialized responses 2021-07-06 19:12:45 +08:00
Him188
f5ce64ba4f Redesign Announcement API
Co-authored-by: Karlatemp <karlatemp@vip.qq.com>
2021-07-06 19:12:45 +08:00
Him188
7722a5a0b0 Move KSerializer.map to mirai-core-utils 2021-07-04 17:56:23 +08:00
Him188
adc39a93b5 Update copyright 2021-07-02 00:39:10 +08:00
Him188
b9eb654a51 Reformat and cleanup code 2021-07-02 00:39:10 +08:00
Him188
5d57c33789 Improve Throwable.unwrap: add the unwrapped-out exception to suppressed exceptions to avoid loss of debugging information 2021-06-29 23:10:06 +08:00
Him188
abb28ee6d2 Improve performance of Either.fold, Either.mapLeft and Either.mapRight 2021-06-25 20:16:59 +08:00
Him188
11ffb324c9 Add Either 2021-06-25 20:05:28 +08:00
Him188
a38f24cbe5 Redesign connection maintenance mechanism:
Reconnection is directed by `BotOfflineEvent`.

### Event Broadcasting

- PacketFactory `MessageSvcPushForceOffline` closes network with `ForceOfflineException`.
 - `network.close(cause)` pass the cause to state observer from `QQAndroidBot.stateObserverChain`, the observer broadcasts as follows:
   - Nothing if `cause` is `ForceOfflineException` or `BotClosedByEvent`(which is broadcast by user)
   - `BotOfflineEvent.Dropped` if cause is NetworkException and is recoverable(which is from Netty handlers)
   - `BotOfflineEvent.Force` if cause is `ForceOfflineException` is from the factory mentioned above.
   - `BotOfflineEvent.Active` otherwise(any other unexpected exceptions considered as an error)

### Deciding whether to reconnect

User can listen and change `BotOfflineEvent.reconnect` to decide. Default values are determined by `BotConfiguration`.

### Event listening

- Component `BotOfflineEventMonitor` listens `BotOfflineEvent`, logs the event for users, and launches a coroutine to do `network.resumeConnection` to notify the selector to renew an instance.
- `BotOnlineWatchdog` in `SelectorNetworkHandler` is removed.
- Selector now handles `maxAttempts` correctly in such a way that `awaitResumeInstance` does not throw exception until maximum attempts reached.
- On every attempt, new exceptions are logged to provide debugging information, and further duplications are ignored.
2021-06-16 16:58:20 +08:00
Him188
9ceb7c3fc2 - Take line number into account of ExceptionCollector.collect;
- Fix suppression;
- Add manual cleanup of references to help gc
2021-06-07 17:47:11 +08:00
Him188
71b128b06c Improve ExceptionCollector.collect for better performance, close #1308 2021-06-07 12:57:00 +08:00
Him188
dadff42718 Unwrap NetworkException on logon failure 2021-06-06 13:58:46 +08:00