         case gif(Data)
         case audio(audioURL: URL, linkURL: URL?)
         case video(URL)
-        case file(Data)
+        case file(Data, fileExt: String?) /// file extension for wechat file share
         case miniApp(url: URL, path: String, withShareTicket: Bool, type: MiniAppType)
     }
 

                    handleNews(with: audioURL, mediaType: "audio")
                case .video(let url):
                    handleNews(with: url, mediaType: nil) // No video type, default is news type.
                case .file(let fileData):
                    var dic: [String: Any] = ["file_data": fileData]
                    if let oldText = UIPasteboard.general.oldText {
                        dic["pasted_string"] = oldText

                            fatalError("Missing `miniProgramID`!")
                        }
                    } 
                case .file(let fileData, let fileExt):
                    weChatMessageInfo["objectType"] = "6"
                    weChatMessageInfo["title"] = info.title
                    weChatMessageInfo["fileData"] = fileData
                    weChatMessageInfo["fileExt"] = fileExt
                }
            } else { // Text Share
                weChatMessageInfo["command"] = "1020"
