The Assignment looks odd because "pstmsg->event" has already been set by the calling function "i2c_interrupt_entry" ... And "pstmsg->event" isn't used after "i2c_transferbytes" returns to "i2c_interrupt_entry" 🤔
We have created an issue for this...
 https://github.com/bouffalolab/bl_iot_sdk/issues/33
@lupyuen as a longtime professional C programmer this is obviously the error you describe, not just because the variable isn't used later, but also because the if-test can't possibly do what is intended with the = that is there.
The code is trying to handle write interrupts if the msg is a write, and read interrupts if the msg is a read. With the mistake, it enters the "write" block for both read and write interrupts on a M_WRITE postmsg, and enters the "read" block for both read and write interrupts on a M_READ postmsg.