Browse Source

【埋点】转档、压缩、合并付费路径埋点

tangchao 1 year ago
parent
commit
6e4e45672f

+ 8 - 3
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -1123,9 +1123,6 @@
 		9FDD0FBA295D5230000C4DAD /* KMToolbarController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD0FB6295D5230000C4DAD /* KMToolbarController.xib */; };
 		9FDD0FBB295D5230000C4DAD /* KMToolbarController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD0FB6295D5230000C4DAD /* KMToolbarController.xib */; };
 		9FDD0FBC295D5230000C4DAD /* KMToolbarController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDD0FB6295D5230000C4DAD /* KMToolbarController.xib */; };
-		9FE5F6D72A5FA95A00A983F1 /* AppCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F00CCC22A2F2E2300AC462E /* AppCenter.framework */; };
-		9FE5F6D82A5FA95D00A983F1 /* AppCenterAnalytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F00CCC32A2F2E2400AC462E /* AppCenterAnalytics.framework */; };
-		9FE5F6D92A5FA96000A983F1 /* AppCenterCrashes.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F00CCC42A2F2E2400AC462E /* AppCenterCrashes.framework */; };
 		9FF94F0929A62B5000B1EF69 /* KMDesignSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FF94F0729A62B5000B1EF69 /* KMDesignSelect.swift */; };
 		9FF94F0A29A62B5000B1EF69 /* KMDesignSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FF94F0729A62B5000B1EF69 /* KMDesignSelect.swift */; };
 		9FF94F0B29A62B5000B1EF69 /* KMDesignSelect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FF94F0729A62B5000B1EF69 /* KMDesignSelect.swift */; };
@@ -2545,6 +2542,9 @@
 		BB7F7C0329AA586900A3E4E7 /* signAddBack.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */; };
 		BB7F7C0429AA586900A3E4E7 /* signAddBack.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */; };
 		BB7F7C0529AA586900A3E4E7 /* signAddBack.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */; };
+		BB7FF5072A60E84400901C2D /* KMEnumExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB7FF5062A60E84400901C2D /* KMEnumExtensions.swift */; };
+		BB7FF5082A60E84400901C2D /* KMEnumExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB7FF5062A60E84400901C2D /* KMEnumExtensions.swift */; };
+		BB7FF5092A60E84400901C2D /* KMEnumExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB7FF5062A60E84400901C2D /* KMEnumExtensions.swift */; };
 		BB8115FB29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB8115FA29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift */; };
 		BB8115FC29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB8115FA29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift */; };
 		BB8115FD29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB8115FA29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift */; };
@@ -4605,6 +4605,7 @@
 		BB7F7BF629AA469F00A3E4E7 /* KMSigntureViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMSigntureViewItem.xib; sourceTree = "<group>"; };
 		BB7F7BFE29AA586800A3E4E7 /* signAdd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = signAdd.png; sourceTree = "<group>"; };
 		BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = signAddBack.png; sourceTree = "<group>"; };
+		BB7FF5062A60E84400901C2D /* KMEnumExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMEnumExtensions.swift; sourceTree = "<group>"; };
 		BB8115FA29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSecureEncryptCheckCellView.swift; sourceTree = "<group>"; };
 		BB8115FE2992682F0008F536 /* KMSecureLimitAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSecureLimitAlertView.swift; sourceTree = "<group>"; };
 		BB86C1EB28F544F4005AD968 /* CPDFListView+Event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CPDFListView+Event.h"; sourceTree = "<group>"; };
@@ -7643,6 +7644,7 @@
 				BB135C2729B6CD4500FD5965 /* Category */,
 				BB0A823129C00400002C5C1B /* KMCommonEnum.swift */,
 				BBA762D129D2D98D00844513 /* KMCommonDefine.swift */,
+				BB7FF5062A60E84400901C2D /* KMEnumExtensions.swift */,
 			);
 			path = Common;
 			sourceTree = "<group>";
@@ -10814,6 +10816,7 @@
 				ADCB9907292B6AC000B51A03 /* KMImageToPDFChooseModel.swift in Sources */,
 				BB86C1ED28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				BB3AAB992987BEA900992A5A /* KMWatermarkPDFView_OC.m in Sources */,
+				BB7FF5072A60E84400901C2D /* KMEnumExtensions.swift in Sources */,
 				F3F0B27329B8ACD000722957 /* CPDFListViewDragObject.m in Sources */,
 				9F8539BE2943085A00DF644E /* KMBrowser.swift in Sources */,
 				89D9896C28FD50EF003A3E87 /* KMAnnotationCollectionViewItem.swift in Sources */,
@@ -11621,6 +11624,7 @@
 				BBEC00A9295BDECF00A26C98 /* KMHeaderFooterContentInfoView.swift in Sources */,
 				9F8539BF2943085A00DF644E /* KMBrowser.swift in Sources */,
 				9F0CB4E62986557F00007028 /* KMDesignToken+PaddingRight.swift in Sources */,
+				BB7FF5082A60E84400901C2D /* KMEnumExtensions.swift in Sources */,
 				F3B698A6298BC84500E0EB4D /* KMDocumentAIPopViewController.m in Sources */,
 				ADC6FC1A297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */,
 				ADCB98DA2924774F00B51A03 /* KMBatchProcessingOrderTableCell.swift in Sources */,
@@ -12728,6 +12732,7 @@
 				ADB2D6EF2947415E0029D2B3 /* KMPrintPaperSetView.swift in Sources */,
 				89E4E7402964160F002DBA6F /* KMAnnotationLinkViewController.m in Sources */,
 				BB3EAEAF293E3D6000D92407 /* KMConvertBaseWindowController.swift in Sources */,
+				BB7FF5092A60E84400901C2D /* KMEnumExtensions.swift in Sources */,
 				9F1FE4A729406E4700E952CA /* CTToolbarView.m in Sources */,
 				BB162E9D295073B50088E9D1 /* KMWatermarkManager.swift in Sources */,
 				BB1CA5C8298E20820059E31C /* KMPreferenceAligementView.swift in Sources */,

+ 110 - 0
PDF Office/PDF Master/Class/Common/KMEnumExtensions.swift

@@ -0,0 +1,110 @@
+//
+//  KMEnumExtensions.swift
+//  PDF Master
+//
+//  Created by tangchao on 2023/7/14.
+//
+
+import Foundation
+
+/*
+ @objc enum KMToolbarType: Int {
+     /// conversion
+     case word = 3000
+     case excel = 3001
+     case ppt = 3002
+     case rtf = 3003
+     case csv = 3004
+     case html = 3005
+     case conversion_text = 3006
+     case conversion_image = 3007
+     
+     /// tool
+     case compress = 8000
+     case merge = 8001
+     case fileCompare = 8002
+     case secure = 8003
+     case redact = 8004
+     case watermark = 8005
+     case background = 8006
+     case headerAndFooter = 8007
+     case bates = 8008
+     case crop = 8009
+ }
+ */
+
+extension KMToolbarType {
+    func toSubscribeWaterMarkType() -> KMSubscribeWaterMarkType {
+        switch self {
+        case .word:
+            return .toWord
+        case .excel:
+            return .toExcel
+        case .ppt:
+            return .toPPT
+        case .rtf:
+            return .toRTF
+        case .csv:
+            return .toCSV
+        case .html:
+            return .toHTML
+        case .conversion_text:
+            return .toText
+        case .conversion_image:
+            return .toImage
+        case .compress:
+            return .compress
+        case .merge:
+            return .merge
+        default:
+            return .none
+        }
+    }
+}
+
+/*
+ enum KMPDFConvertType: Int {
+     case word = 0
+     case excel = 1
+     case ppt = 2
+     case rtf = 3
+     case csv = 4
+     case html = 5
+     case text = 6
+     case jpeg = 7
+     case jpg = 8
+     case png = 9
+     case gif = 10
+     case tiff = 11
+     case tga = 12
+     case bmp = 13
+     case jp2 = 14
+     
+     static let image: KMPDFConvertType = .jpeg
+ }
+ */
+
+extension KMPDFConvertType {
+    func toSubscribeWaterMarkType() -> KMSubscribeWaterMarkType {
+        switch self {
+        case .word:
+            return .toWord
+        case .excel:
+            return .toExcel
+        case .ppt:
+            return .toPPT
+        case .rtf:
+            return .toRTF
+        case .csv:
+            return .toCSV
+        case .html:
+            return .toHTML
+        case .text:
+            return .toText
+        case .image:
+            return .toImage
+        default:
+            return .none
+        }
+    }
+}

+ 2 - 2
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController+Action.swift

@@ -955,7 +955,7 @@ extension KMHomeViewController {
                 return
             }
             if await (KMLightMemberManager.manager.canPayFunction() == false) {
-                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: .merge) { isSubscribeSuccess, isWaterMarkExport, isClose in
                     if (isClose) {
                         return
                     }
@@ -993,7 +993,7 @@ extension KMHomeViewController {
             }
             
             if await (KMLightMemberManager.manager.canPayFunction() == false) {
-                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: .compress) { isSubscribeSuccess, isWaterMarkExport, isClose in
                     if (isClose) {
                         return
                     }

+ 1 - 1
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController+UI.swift

@@ -179,7 +179,7 @@ extension KMHomeViewController {
                 return
             }
             if await (KMLightMemberManager.manager.canPayFunction() == false) {
-                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: type.toSubscribeWaterMarkType()) { isSubscribeSuccess, isWaterMarkExport, isClose in
                     if (isClose) {
                         return
                     }

+ 96 - 1
PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/KMSubscribeWaterMarkWindowController.swift

@@ -9,6 +9,38 @@ import Cocoa
 var subscribeWaterMarkController: KMSubscribeWaterMarkWindowController?
 var subscribeWaterMarkMainWindow: NSWindow?
 
+@objc enum KMSubscribeWaterMarkType: Int {
+    case none       = 0
+    case stamp      = 1
+    case link
+    case sign
+    case editText
+    case editImage
+    case insert
+    case extract
+    case replace
+    case split
+    case delete
+    case rotate
+    case copy
+    case toWord
+    case toExcel
+    case toPPT
+    case toRTF
+    case toCSV
+    case toHTML
+    case toText
+    case toImage
+    case compress
+    case merge
+    case setPassword
+    case removePassword
+    case crop
+    case aiTranslate
+    case aiRewrite
+    case aiCorrect
+}
+
 typealias KMSubscribeWaterMarkWindowControllerCloseAction = (_ controller: KMSubscribeWaterMarkWindowController) -> Void
 typealias KMSubscribeWaterMarkWindowControllerWatermarkExportAction = (_ controller: KMSubscribeWaterMarkWindowController) -> Void
 typealias KMSubscribeWaterMarkWindowControllerSubscribeAction = (_ controller: KMSubscribeWaterMarkWindowController) -> Void
@@ -55,7 +87,7 @@ class KMSubscribeWaterMarkWindowController: NSWindowController {
     }
     
     //MARK: 打开文件
-    static func show(window: NSWindow, isContinue: Bool = false, isAI: Bool = false, completion: @escaping (_ isSubscribeSuccess: Bool, _ isWaterMarkExport: Bool, _ isClose: Bool) -> Void) -> KMSubscribeWaterMarkWindowController {
+    static func show(window: NSWindow, isContinue: Bool = false, isAI: Bool = false, type: KMSubscribeWaterMarkType = .none,  completion: @escaping (_ isSubscribeSuccess: Bool, _ isWaterMarkExport: Bool, _ isClose: Bool) -> Void) -> KMSubscribeWaterMarkWindowController {
         let subscribeWaterMarkWindowController: KMSubscribeWaterMarkWindowController = KMSubscribeWaterMarkWindowController.init(windowNibName: "KMSubscribeWaterMarkWindowController")
 
         subscribeWaterMarkWindowController.isContinue = isContinue
@@ -87,6 +119,9 @@ class KMSubscribeWaterMarkWindowController: NSWindowController {
         }
         
         subscribeWaterMarkWindowController.subscribeAction = { controller in
+            // 数据埋点
+            controller.trackEvent(type: type)
+            
             controller.waterMarkView.beginLoading(backgroundColor: NSColor.black.withAlphaComponent(0.2))
             KMPurchaseManager.manager.purchaseProduct(productIdentifier: PRODUCT_1) { isSuccess, error in
                 if isSuccess {
@@ -217,4 +252,64 @@ extension KMSubscribeWaterMarkWindowController {
             KMAnalytics.Parameter.categoryKey : KMAnalytics.Category.puw,
             KMAnalytics.Parameter.labelKey : KMAnalytics.Label.sub_PUW], platform: .AppCenter, appTarget: .dmg)
     }
+    
+    func trackEvent(type: KMSubscribeWaterMarkType) -> Void {
+        if (type == .stamp) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Stamp", parameters: nil, appTarget: .dmg)
+        } else if (type == .link) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Link", parameters: nil, appTarget: .dmg)
+        } else if (type == .sign) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Sign", parameters: nil, appTarget: .dmg)
+        } else if (type == .editText) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_EditText", parameters: nil, appTarget: .dmg)
+        } else if (type == .editImage) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_EditImage", parameters: nil, appTarget: .dmg)
+        } else if (type == .insert) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Insert", parameters: nil, appTarget: .dmg)
+        } else if (type == .extract) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Extract", parameters: nil, appTarget: .dmg)
+        } else if (type == .replace) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Replace", parameters: nil, appTarget: .dmg)
+        } else if (type == .split) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Split", parameters: nil, appTarget: .dmg)
+        } else if (type == .delete) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Delete", parameters: nil, appTarget: .dmg)
+        } else if (type == .rotate) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Rotate", parameters: nil, appTarget: .dmg)
+        } else if (type == .copy) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Copy", parameters: nil, appTarget: .dmg)
+        } else if (type == .toWord) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_ToWord", parameters: nil, appTarget: .dmg)
+        } else if (type == .toExcel) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_ToExcel", parameters: nil, appTarget: .dmg)
+        } else if (type == .toPPT) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_ToPPT", parameters: nil, appTarget: .dmg)
+        } else if (type == .toRTF) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_ToRTF", parameters: nil, appTarget: .dmg)
+        } else if (type == .toCSV) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_ToCSV", parameters: nil, appTarget: .dmg)
+        } else if (type == .toHTML) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_ToHTML", parameters: nil, appTarget: .dmg)
+        } else if (type == .toText) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_ToText", parameters: nil, appTarget: .dmg)
+        } else if (type == .toImage) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_ToImage", parameters: nil, appTarget: .dmg)
+        } else if (type == .compress) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Compress", parameters: nil, appTarget: .dmg)
+        } else if (type == .merge) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Merge", parameters: nil, appTarget: .dmg)
+        } else if (type == .setPassword) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_SetPassword", parameters: nil, appTarget: .dmg)
+        } else if (type == .removePassword) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_RemovePassword", parameters: nil, appTarget: .dmg)
+        } else if (type == .crop) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_Crop", parameters: nil, appTarget: .dmg)
+        } else if (type == .aiTranslate) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_AITranslate", parameters: nil, appTarget: .dmg)
+        } else if (type == .aiRewrite) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_AIRewrite", parameters: nil, appTarget: .dmg)
+        } else if (type == .aiCorrect) {
+            KMAnalytics.trackEvent(eventName: "PDFMaster_Subscribe_AICorrect", parameters: nil, appTarget: .dmg)
+        }
+    }
 }

+ 1 - 1
PDF Office/PDF Master/Class/PDFTools/PageEdit/Controller/KMPDFEditViewController.swift

@@ -386,7 +386,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
                 return
             }
             if await (KMLightMemberManager.manager.canPayFunction() == false) {
-                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: .split) { isSubscribeSuccess, isWaterMarkExport, isClose in
                     if (isClose) {
                         return
                     }

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/Base/KMPDFThumbViewBaseController.swift

@@ -333,7 +333,7 @@ class KMPDFThumbViewBaseController: KMBaseViewController {
                 return
             }
             if await (KMLightMemberManager.manager.canPayFunction() == false) {
-                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: .extract) { isSubscribeSuccess, isWaterMarkExport, isClose in
                     if (isClose) {
                         return
                     }

+ 4 - 4
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -2367,7 +2367,7 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                 }
                 
                 if await (KMLightMemberManager.manager.canPayFunction() == false) {
-                    let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                    let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: .compress) { isSubscribeSuccess, isWaterMarkExport, isClose in
                         if (isClose) {
                             return
                         }
@@ -2437,7 +2437,7 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                 }
                 
                 if await (KMLightMemberManager.manager.canPayFunction() == false) {
-                    let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                    let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: type.toSubscribeWaterMarkType()) { isSubscribeSuccess, isWaterMarkExport, isClose in
                         if (isClose) {
                             return
                         }
@@ -2492,7 +2492,7 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                     if await (KMLightMemberManager.manager.canPayFunction() == false) {
                         //FIXME: 方案待确认,先不处理保存
 //                        self.showMergeWindow(password)
-                        let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                        let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: .merge) { isSubscribeSuccess, isWaterMarkExport, isClose in
                             if (isClose) {
                                 return
                             }
@@ -2554,7 +2554,7 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                 }
                 
                 if await (KMLightMemberManager.manager.canPayFunction() == false) {
-                    let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true) { isSubscribeSuccess, isWaterMarkExport, isClose in
+                    let _ = KMSubscribeWaterMarkWindowController.show(window: self.view.window!, isContinue: true, type: .merge) { isSubscribeSuccess, isWaterMarkExport, isClose in
                         if (isClose) {
                             return
                         }