|
34 | 34 | QChatUncompliantMessage, |
35 | 35 | ) |
36 | 36 | from qtribu.toolbelt import PlgLogger |
| 37 | +from qtribu.toolbelt.exceptions import QChatMessageCanNotBeParsedException |
37 | 38 |
|
38 | 39 | # conditional import depending on Qt version |
39 | 40 | if int(QT_VERSION_STR.split(".")[0]) == 5: |
@@ -133,23 +134,33 @@ def on_message_received(self, text: str) -> None: |
133 | 134 | ) |
134 | 135 | return |
135 | 136 | msg_type = message["type"] |
136 | | - if msg_type == QCHAT_MESSAGE_TYPE_UNCOMPLIANT: |
137 | | - self.uncompliant_message_received.emit(QChatUncompliantMessage(**message)) |
138 | | - elif msg_type == QCHAT_MESSAGE_TYPE_TEXT: |
139 | | - self.text_message_received.emit(QChatTextMessage(**message)) |
140 | | - elif msg_type == QCHAT_MESSAGE_TYPE_IMAGE: |
141 | | - self.image_message_received.emit(QChatImageMessage(**message)) |
142 | | - elif msg_type == QCHAT_MESSAGE_TYPE_NB_USERS: |
143 | | - self.nb_users_message_received.emit(QChatNbUsersMessage(**message)) |
144 | | - elif msg_type == QCHAT_MESSAGE_TYPE_NEWCOMER: |
145 | | - self.newcomer_message_received.emit(QChatNewcomerMessage(**message)) |
146 | | - elif msg_type == QCHAT_MESSAGE_TYPE_EXITER: |
147 | | - self.exiter_message_received.emit(QChatExiterMessage(**message)) |
148 | | - elif msg_type == QCHAT_MESSAGE_TYPE_LIKE: |
149 | | - self.like_message_received.emit(QChatLikeMessage(**message)) |
150 | | - elif msg_type == QCHAT_MESSAGE_TYPE_GEOJSON: |
151 | | - self.geojson_message_received.emit(QChatGeojsonMessage(**message)) |
152 | | - elif msg_type == QCHAT_MESSAGE_TYPE_CRS: |
153 | | - self.crs_message_received.emit(QChatCrsMessage(**message)) |
154 | | - elif msg_type == QCHAT_MESSAGE_TYPE_BBOX: |
155 | | - self.bbox_message_received.emit(QChatBboxMessage(**message)) |
| 137 | + try: |
| 138 | + if msg_type == QCHAT_MESSAGE_TYPE_UNCOMPLIANT: |
| 139 | + self.uncompliant_message_received.emit( |
| 140 | + QChatUncompliantMessage(**message) |
| 141 | + ) |
| 142 | + elif msg_type == QCHAT_MESSAGE_TYPE_TEXT: |
| 143 | + self.text_message_received.emit(QChatTextMessage(**message)) |
| 144 | + elif msg_type == QCHAT_MESSAGE_TYPE_IMAGE: |
| 145 | + self.image_message_received.emit(QChatImageMessage(**message)) |
| 146 | + elif msg_type == QCHAT_MESSAGE_TYPE_NB_USERS: |
| 147 | + self.nb_users_message_received.emit(QChatNbUsersMessage(**message)) |
| 148 | + elif msg_type == QCHAT_MESSAGE_TYPE_NEWCOMER: |
| 149 | + self.newcomer_message_received.emit(QChatNewcomerMessage(**message)) |
| 150 | + elif msg_type == QCHAT_MESSAGE_TYPE_EXITER: |
| 151 | + self.exiter_message_received.emit(QChatExiterMessage(**message)) |
| 152 | + elif msg_type == QCHAT_MESSAGE_TYPE_LIKE: |
| 153 | + self.like_message_received.emit(QChatLikeMessage(**message)) |
| 154 | + elif msg_type == QCHAT_MESSAGE_TYPE_GEOJSON: |
| 155 | + self.geojson_message_received.emit(QChatGeojsonMessage(**message)) |
| 156 | + elif msg_type == QCHAT_MESSAGE_TYPE_CRS: |
| 157 | + self.crs_message_received.emit(QChatCrsMessage(**message)) |
| 158 | + elif msg_type == QCHAT_MESSAGE_TYPE_BBOX: |
| 159 | + self.bbox_message_received.emit(QChatBboxMessage(**message)) |
| 160 | + except KeyError: |
| 161 | + text = self.tr( |
| 162 | + "Unintelligible message received. Please make sure you are using the latest plugin version. (type={type})" |
| 163 | + ).format(type=msg_type) |
| 164 | + message = QChatUncompliantMessage(reason=text) |
| 165 | + self.uncompliant_message_received.emit(message) |
| 166 | + raise QChatMessageCanNotBeParsedException(message=text) |
0 commit comments