fmode-ng 0.0.113 → 0.0.115
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +8 -0
- package/README.md +37 -37
- package/esm2022/fmode-ng.mjs +10 -5
- package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
- package/esm2022/lib/aigc/agent/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
- package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
- package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
- package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
- package/esm2022/lib/aigc/avatar/index.mjs +10 -8
- package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
- package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
- package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
- package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
- package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
- package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
- package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
- package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
- package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
- package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
- package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/index.mjs +10 -8
- package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
- package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
- package/esm2022/lib/aigc/index.mjs +10 -14
- package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
- package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
- package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
- package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
- package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
- package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
- package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
- package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
- package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
- package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
- package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
- package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
- package/esm2022/lib/aigc/story/index.mjs +10 -6
- package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
- package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
- package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
- package/esm2022/lib/aigc/story/story.service.mjs +10 -35
- package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
- package/esm2022/lib/aigc/voice/index.mjs +10 -7
- package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
- package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
- package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
- package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
- package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
- package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
- package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
- package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
- package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
- package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
- package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
- package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
- package/esm2022/lib/code/index.mjs +10 -2
- package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
- package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
- package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
- package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
- package/esm2022/lib/core/agent/chat/index.mjs +10 -4
- package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
- package/esm2022/lib/core/agent/index.mjs +10 -6
- package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
- package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
- package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
- package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
- package/esm2022/lib/core/agent/story/index.mjs +10 -2
- package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
- package/esm2022/lib/core/agent/task/index.mjs +10 -2
- package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
- package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
- package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
- package/esm2022/lib/core/index.mjs +10 -4
- package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
- package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
- package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
- package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
- package/esm2022/lib/core/parse/fmode.cloud.mjs +10 -0
- package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
- package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
- package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
- package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
- package/esm2022/lib/core/parse/index.mjs +10 -5
- package/esm2022/lib/core/parse/types.mjs +10 -2
- package/esm2022/lib/core/voice/index.mjs +10 -3
- package/esm2022/lib/core/voice/tts/index.mjs +10 -2
- package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
- package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
- package/esm2022/lib/icon/filetype/index.mjs +10 -12
- package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
- package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
- package/esm2022/lib/icon/index.mjs +10 -2
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
- package/esm2022/lib/map/index.mjs +10 -4
- package/esm2022/lib/map/map.module.mjs +10 -61
- package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
- package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
- package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
- package/esm2022/lib/nova-cloud/index.mjs +10 -3
- package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
- package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
- package/esm2022/lib/payment/index.mjs +10 -2
- package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
- package/esm2022/lib/payment/payment.service.mjs +10 -202
- package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
- package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
- package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
- package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
- package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
- package/esm2022/lib/person/index.mjs +10 -5
- package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
- package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
- package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
- package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
- package/esm2022/lib/person/person.service.mjs +8 -193
- package/esm2022/lib/platform/cross.service.mjs +10 -62
- package/esm2022/lib/platform/index.mjs +10 -2
- package/esm2022/lib/social/index.mjs +10 -2
- package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
- package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
- package/esm2022/lib/storage/index.mjs +10 -5
- package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
- package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
- package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
- package/esm2022/lib/storage/service-upload/index.mjs +10 -2
- package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
- package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
- package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
- package/esm2022/lib/storage/storage.module.mjs +10 -42
- package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
- package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
- package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
- package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
- package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
- package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
- package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
- package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
- package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
- package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
- package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
- package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
- package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
- package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
- package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
- package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
- package/esm2022/lib/text/index.mjs +10 -4
- package/esm2022/lib/user/account/account.service.mjs +10 -222
- package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
- package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
- package/esm2022/lib/user/index.mjs +10 -17
- package/esm2022/lib/user/login/auth.guard.mjs +10 -28
- package/esm2022/lib/user/login/auth.service.mjs +8 -433
- package/esm2022/lib/user/login/login.component.mjs +10 -916
- package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
- package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
- package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
- package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
- package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
- package/esm2022/lib/user/profile/profile.module.mjs +10 -54
- package/esm2022/lib/user/staff/index.mjs +10 -4
- package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
- package/esm2022/lib/user/staff/staff.module.mjs +10 -18
- package/esm2022/lib/user/staff/staff.service.mjs +10 -85
- package/esm2022/lib/user/user-name.pipe.mjs +10 -29
- package/esm2022/lib/user/user.module.mjs +10 -102
- package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
- package/esm2022/lib/video/index.mjs +10 -2
- package/esm2022/public-api.mjs +10 -21
- package/fesm2022/fmode-ng.mjs +7 -19788
- package/fesm2022/fmode-ng.mjs.map +1 -1
- package/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.d.ts +2 -2
- package/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.d.ts +2 -2
- package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +2 -2
- package/lib/aigc/chat/chat-list/chat-list.component.d.ts +3 -2
- package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +3 -3
- package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +2 -2
- package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +3 -3
- package/lib/aigc/service-fmai/service-imagine/imagine-func.d.ts +3 -3
- package/lib/aigc/service-fmai/service-imagine/imagine-work.d.ts +4 -4
- package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +6 -6
- package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +2 -2
- package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +2 -1
- package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +6 -6
- package/lib/aigc/story/fm-story-list/story-preview.d.ts +4 -4
- package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +3 -3
- package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +2 -2
- package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +3 -2
- package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +3 -2
- package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +6 -6
- package/lib/aigc/story/story.service.d.ts +3 -2
- package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
- package/lib/core/agent/chat/fmode-chat.d.ts +11 -11
- package/lib/core/agent/story/agent.story.d.ts +8 -8
- package/lib/core/parse/datatype/geopoint.d.ts +5 -1
- package/lib/core/parse/fmode.cloud.d.ts +32 -0
- package/lib/core/parse/fmode.object.d.ts +2 -2
- package/lib/core/parse/fmode.parse.d.ts +15 -9
- package/lib/core/parse/fmode.query.d.ts +41 -2
- package/lib/core/parse/fmode.user.d.ts +1 -0
- package/lib/core/parse/index.d.ts +1 -0
- package/lib/core/parse/types.d.ts +2 -0
- package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +5 -5
- package/lib/payment/payment/payment.component.d.ts +3 -3
- package/lib/payment/payment.service.d.ts +4 -4
- package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +2 -1
- package/lib/person/comp-person-item/comp-person-item.component.d.ts +2 -1
- package/lib/person/comp-person-story/comp-person-story.component.d.ts +13 -13
- package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
- package/lib/person/modal-person-select/modal-person-select.component.d.ts +5 -5
- package/lib/person/modal-user-verify/user-verify.component.d.ts +5 -5
- package/lib/person/person-detail/person-detail.component.d.ts +4 -4
- package/lib/person/person.service.d.ts +7 -7
- package/lib/storage/service-hwobs/hwobs.service.d.ts +4 -5
- package/lib/storage/service-upload/nova-upload.service.d.ts +5 -5
- package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +2 -1
- package/lib/text/fm-article-editor/article.service.d.ts +12 -12
- package/lib/text/fm-article-editor/draft.service.d.ts +5 -5
- package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +3 -2
- package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +16 -17
- package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +3 -3
- package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +11 -10
- package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +2 -2
- package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +3 -3
- package/lib/text/fm-article-editor/task-article-generation.d.ts +5 -4
- package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +2 -1
- package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +3 -3
- package/lib/user/account/account.service.d.ts +2 -2
- package/lib/user/comp-user-avatar/comp-user-avatar.component.d.ts +2 -2
- package/lib/user/login/auth.service.d.ts +5 -5
- package/lib/user/login/login.component.d.ts +3 -3
- package/lib/user/profile/auth-profile.service.d.ts +8 -8
- package/lib/user/profile/profile-bind/profile-bind.component.d.ts +7 -7
- package/lib/user/profile/profile-bind/profile-confirm-modal.component.d.ts +2 -2
- package/lib/user/staff/staff.service.d.ts +3 -3
- package/lib/user/user-name.pipe.d.ts +2 -2
- package/package.json +12 -18
|
@@ -1,237 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import * as i1 from "@angular/router";
|
|
12
|
-
import * as i2 from "../../social/wechat/wechat-jssdk.service";
|
|
13
|
-
import * as i3 from "../../aigc/comp-markdown-preview/clipboard.service";
|
|
14
|
-
import * as i4 from "@angular/material/dialog";
|
|
15
|
-
import * as i5 from "@ionic/angular/standalone";
|
|
16
|
-
import * as i6 from "../../person/person.service";
|
|
17
|
-
export class ArticleService {
|
|
18
|
-
constructor(router, wxjssdk, clipboard, dialog, modalCtrl, personServ) {
|
|
19
|
-
this.router = router;
|
|
20
|
-
this.wxjssdk = wxjssdk;
|
|
21
|
-
this.clipboard = clipboard;
|
|
22
|
-
this.dialog = dialog;
|
|
23
|
-
this.modalCtrl = modalCtrl;
|
|
24
|
-
this.personServ = personServ;
|
|
25
|
-
this.Article = Parse.Object.extend("Article");
|
|
26
|
-
this.articleList = [];
|
|
27
|
-
this.limit = 20;
|
|
28
|
-
this.skip = 0;
|
|
29
|
-
// 点赞文章 + 收藏文章
|
|
30
|
-
this.likeMap = {};
|
|
31
|
-
this.ArticleLike = Parse.Object.extend("ArticleLike");
|
|
32
|
-
// 收藏文章
|
|
33
|
-
this.collectMap = {};
|
|
34
|
-
}
|
|
35
|
-
async loadArticle(options) {
|
|
36
|
-
options.currentTab = options.currentTab || "article";
|
|
37
|
-
options.isNew = options.isNew || false;
|
|
38
|
-
if (!Parse.User.current()?.id)
|
|
39
|
-
return [];
|
|
40
|
-
if (options?.isNew) {
|
|
41
|
-
this.articleList = [];
|
|
42
|
-
this.skip = 0;
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this.skip += this.articleList?.length;
|
|
46
|
-
}
|
|
47
|
-
let query = new Parse.Query("Article");
|
|
48
|
-
query.include('chapter.book.person', 'author.user');
|
|
49
|
-
query.addDescending("createdAt"); // 站内文章按创建时间排序
|
|
50
|
-
query.skip(this.skip);
|
|
51
|
-
query.notEqualTo("isDeleted", true);
|
|
52
|
-
if (options?.currentTab == "mine") {
|
|
53
|
-
query.equalTo("author", Parse.User?.current()?.id);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
query.equalTo("isPublic", true);
|
|
57
|
-
}
|
|
58
|
-
let list = await query.find();
|
|
59
|
-
this.loadArtcleAnalysis(list); // 加载点赞、收藏状态
|
|
60
|
-
if (this.articleList?.length) {
|
|
61
|
-
this.articleList = this.articleList.concat(list);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
this.articleList = list;
|
|
65
|
-
}
|
|
66
|
-
return this.articleList;
|
|
67
|
-
}
|
|
68
|
-
async createArticle(options) {
|
|
69
|
-
let article = new this.Article();
|
|
70
|
-
article.set("title", this.newTitle());
|
|
71
|
-
// 补充帐套
|
|
72
|
-
let cid = localStorage.getItem("company");
|
|
73
|
-
if (cid) {
|
|
74
|
-
article?.set("company", { __type: "Pointer", className: "Company", objectId: cid });
|
|
75
|
-
}
|
|
76
|
-
// 补充作者
|
|
77
|
-
if (!article?.get("author")?.id) {
|
|
78
|
-
article?.set("author", Parse.User.current()?.toPointer());
|
|
79
|
-
}
|
|
80
|
-
article = await article?.save();
|
|
81
|
-
if (!options?.noRedirect) {
|
|
82
|
-
this.router.navigate(["editor", "article", article?.id]);
|
|
83
|
-
}
|
|
84
|
-
return article;
|
|
85
|
-
}
|
|
86
|
-
async newArticleByStory() {
|
|
87
|
-
let shareData = {};
|
|
88
|
-
shareData.createNewDraft = true;
|
|
89
|
-
let article = await this.createArticle({ noRedirect: true });
|
|
90
|
-
taskArticleGeneration(() => { }, {
|
|
91
|
-
dialog: this.dialog,
|
|
92
|
-
modalCtrl: this.modalCtrl,
|
|
93
|
-
shareData: shareData,
|
|
94
|
-
article: article,
|
|
95
|
-
personServ: this.personServ
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
newTitle() {
|
|
99
|
-
let now = new Date();
|
|
100
|
-
return `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}-新创作`;
|
|
101
|
-
}
|
|
102
|
-
// 分享文章
|
|
103
|
-
async shareArticle(article) {
|
|
104
|
-
if (!article?.id)
|
|
105
|
-
return;
|
|
106
|
-
let banners = this.getArticleBanner(article);
|
|
107
|
-
let link = "https://www.yuban.co/app/article/" + article?.id + "?invite=" + Parse.User.current()?.id;
|
|
108
|
-
// 微信设置朋友圈分享
|
|
109
|
-
if (this.wxjssdk.isWechat) {
|
|
110
|
-
this.initWxShareInfo(article);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
// 普通复制链接地址
|
|
114
|
-
let shareText = `${article?.get("title")} ${link} POWERED BY 自传语伴`;
|
|
115
|
-
this.clipboard.copyToClipboard(shareText);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
initWxShareInfo(article) {
|
|
119
|
-
let banners = this.getArticleBanner(article);
|
|
120
|
-
let avatar = Parse.User.current()?.get("avatar");
|
|
121
|
-
let link = "https://www.yuban.co/app/article/" + article?.id + "?invite=" + Parse.User.current()?.id;
|
|
122
|
-
// 微信设置朋友圈分享
|
|
123
|
-
if (this.wxjssdk.isWechat) {
|
|
124
|
-
let shareInfo = {
|
|
125
|
-
title: article?.get("title"),
|
|
126
|
-
desc: article?.get("desc"),
|
|
127
|
-
link: link,
|
|
128
|
-
type: "link",
|
|
129
|
-
imgUrl: banners[0] || avatar || "https://file.yuban.co/img/icon.png",
|
|
130
|
-
success: () => {
|
|
131
|
-
// 设置成功
|
|
132
|
-
console.log('分享成功');
|
|
133
|
-
},
|
|
134
|
-
error: () => {
|
|
135
|
-
console.log('分享失败');
|
|
136
|
-
},
|
|
137
|
-
cancel: () => {
|
|
138
|
-
console.log('取消分享');
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
this.wxjssdk.setCurrentPageShareInfo(shareInfo);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// 获取文章轮播图
|
|
145
|
-
getArticleBanner(article) {
|
|
146
|
-
let bannerList = [];
|
|
147
|
-
let image = article?.get("image");
|
|
148
|
-
if (image)
|
|
149
|
-
bannerList.push(image);
|
|
150
|
-
bannerList = bannerList.concat(article?.get("cover") || []);
|
|
151
|
-
console.log("bannerList", bannerList);
|
|
152
|
-
return bannerList;
|
|
153
|
-
}
|
|
154
|
-
// 加载likeMap collectMap
|
|
155
|
-
async loadArtcleAnalysis(articleList) {
|
|
156
|
-
let uid = Parse.User.current()?.id;
|
|
157
|
-
if (!uid)
|
|
158
|
-
return;
|
|
159
|
-
let query = new Parse.Query("ArticleLike");
|
|
160
|
-
query.select("article", "type");
|
|
161
|
-
query.equalTo("user", uid);
|
|
162
|
-
query.notEqualTo("isDeleted", true);
|
|
163
|
-
query.containedIn("article", articleList?.map(item => item?.id));
|
|
164
|
-
let list = await query.find();
|
|
165
|
-
list.forEach(item => {
|
|
166
|
-
let aid = item?.get("article")?.id || item?.get("article")?.objectId;
|
|
167
|
-
if (item?.get("type") == "collect") {
|
|
168
|
-
this.collectMap[aid] = true;
|
|
169
|
-
}
|
|
170
|
-
if (item?.get("type") == "like") {
|
|
171
|
-
this.likeMap[aid] = true;
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
// 浏览文章
|
|
176
|
-
viewArticle(article) {
|
|
177
|
-
if (!article?.id)
|
|
178
|
-
return;
|
|
179
|
-
article.increment("viewCount");
|
|
180
|
-
article.save();
|
|
181
|
-
}
|
|
182
|
-
async likeArticle(article, type = "like") {
|
|
183
|
-
if (!article?.id)
|
|
184
|
-
return;
|
|
185
|
-
if (Parse.User.current()?.id) {
|
|
186
|
-
let query = new Parse.Query("ArticleLike");
|
|
187
|
-
query.equalTo("user", Parse.User.current());
|
|
188
|
-
query.equalTo("type", type);
|
|
189
|
-
query.equalTo("article", article?.id);
|
|
190
|
-
let like = await query.first();
|
|
191
|
-
if (!like?.id) {
|
|
192
|
-
like = new this.ArticleLike();
|
|
193
|
-
}
|
|
194
|
-
// 设置点赞
|
|
195
|
-
like?.set("type", type);
|
|
196
|
-
like?.set("user", Parse.User.current());
|
|
197
|
-
like?.set("article", article.toPointer());
|
|
198
|
-
if (like?.get("isDeleted") == undefined) {
|
|
199
|
-
like?.set("isDeleted", false);
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
like?.set("isDeleted", !like.get("isDeleted"));
|
|
203
|
-
}
|
|
204
|
-
if (localStorage.getItem("company")) {
|
|
205
|
-
like?.set("company", { __type: "Pointer", className: "Company", objectId: localStorage.getItem("company") });
|
|
206
|
-
}
|
|
207
|
-
like = await like?.save();
|
|
208
|
-
if (type == "like") {
|
|
209
|
-
this.likeMap[article?.id] = !like?.get("isDeleted");
|
|
210
|
-
}
|
|
211
|
-
if (type == "collect") {
|
|
212
|
-
this.collectMap[article?.id] = !like?.get("isDeleted");
|
|
213
|
-
}
|
|
214
|
-
// 同步点赞数
|
|
215
|
-
let qcount = new Parse.Query("ArticleLike");
|
|
216
|
-
qcount.notEqualTo("isDeleted", true);
|
|
217
|
-
qcount.equalTo("type", type);
|
|
218
|
-
qcount.equalTo("article", article?.id);
|
|
219
|
-
if (type == "like") {
|
|
220
|
-
article.set("likeCount", (await qcount.count()) || 0);
|
|
221
|
-
}
|
|
222
|
-
if (type == "collect") {
|
|
223
|
-
article.set("collectCount", (await qcount.count()) || 0);
|
|
224
|
-
}
|
|
225
|
-
article = await article.save();
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleService, deps: [{ token: i1.Router }, { token: i2.WechatJssdkService }, { token: i3.ClipboardService }, { token: i4.MatDialog }, { token: i5.ModalController }, { token: i6.PersonService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
229
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleService, providedIn: 'root' }); }
|
|
230
|
-
}
|
|
231
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleService, decorators: [{
|
|
232
|
-
type: Injectable,
|
|
233
|
-
args: [{
|
|
234
|
-
providedIn: 'root'
|
|
235
|
-
}]
|
|
236
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.WechatJssdkService }, { type: i3.ClipboardService }, { type: i4.MatDialog }, { type: i5.ModalController }, { type: i6.PersonService }] });
|
|
237
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2FydGljbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBSzVELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ1UsTUFBYSxFQUNiLE9BQTJCLEVBQzNCLFNBQTBCLEVBQzFCLE1BQWdCLEVBQ2hCLFNBQXlCLEVBQ3pCLFVBQXdCO1FBTHhCLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFQbEMsWUFBTyxHQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQVU5RCxnQkFBVyxHQUFxQixF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Q0FBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLElBQUcsSUFBSSxJQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLENBQUMsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsSUFBRyxJQUFJLElBQUUsU0FBUyxFQUFDLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFDLENBQUMsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpDLENBQUM7SUFDSCxDQUFDOytHQTNOVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJy4uLy4uL2FpZ2MvY29tcC1tYXJrZG93bi1wcmV2aWV3L2NsaXBib2FyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2VjaGF0SnNzZGtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc29jaWFsL3dlY2hhdC93ZWNoYXQtanNzZGsuc2VydmljZSc7XHJcbmltcG9ydCBQYXJzZSBmcm9tIFwicGFyc2VcIjtcclxuaW1wb3J0IHsgdGFza0FydGljbGVHZW5lcmF0aW9uIH0gZnJvbSAnLi90YXNrLWFydGljbGUtZ2VuZXJhdGlvbic7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xyXG5pbXBvcnQgeyBQZXJzb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGVyc29uL3BlcnNvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFydGljbGVTZXJ2aWNlIHtcclxuXHJcbiAgQXJ0aWNsZTpQYXJzZS5PYmplY3RDb25zdHJ1Y3RvciA9IFBhcnNlLk9iamVjdC5leHRlbmQoXCJBcnRpY2xlXCIpXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjpSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHd4anNzZGs6IFdlY2hhdEpzc2RrU2VydmljZSxcclxuICAgIHByaXZhdGUgY2xpcGJvYXJkOkNsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzpNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIG1vZGFsQ3RybDpNb2RhbENvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIHBlcnNvblNlcnY6UGVyc29uU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgYXJ0aWNsZUxpc3Q6QXJyYXk8UGFyc2UuT2JqZWN0Pj1bXVxyXG4gICAgbGltaXQ6bnVtYmVyID0gMjA7XHJcbiAgICBza2lwOm51bWJlciA9IDA7XHJcbiAgICBhc3luYyBsb2FkQXJ0aWNsZShvcHRpb25zOntcclxuICAgICAgY3VycmVudFRhYjpzdHJpbmdcclxuICAgICAgaXNOZXc6Ym9vbGVhblxyXG4gICAgfSk6UHJvbWlzZTxBcnJheTxQYXJzZS5PYmplY3Q+PntcclxuICAgICAgb3B0aW9ucy5jdXJyZW50VGFiID0gb3B0aW9ucy5jdXJyZW50VGFiIHx8IFwiYXJ0aWNsZVwiO1xyXG4gICAgICBvcHRpb25zLmlzTmV3ID0gb3B0aW9ucy5pc05ldyB8fCBmYWxzZTtcclxuICAgICAgaWYoIVBhcnNlLlVzZXIuY3VycmVudCgpPy5pZCkgcmV0dXJuIFtdO1xyXG4gICAgICBpZihvcHRpb25zPy5pc05ldyl7XHJcbiAgICAgICAgdGhpcy5hcnRpY2xlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2tpcCA9IDA7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuc2tpcCArPSB0aGlzLmFydGljbGVMaXN0Py5sZW5ndGhcclxuICAgICAgfVxyXG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlXCIpO1xyXG4gICAgICBxdWVyeS5pbmNsdWRlKCdjaGFwdGVyLmJvb2sucGVyc29uJywnYXV0aG9yLnVzZXInKVxyXG4gICAgICBxdWVyeS5hZGREZXNjZW5kaW5nKFwiY3JlYXRlZEF0XCIpOyAvLyDnq5nlhoXmlofnq6DmjInliJvlu7rml7bpl7TmjpLluo9cclxuICAgICAgcXVlcnkuc2tpcCh0aGlzLnNraXApO1xyXG4gICAgICBxdWVyeS5ub3RFcXVhbFRvKFwiaXNEZWxldGVkXCIsdHJ1ZSlcclxuICAgICAgaWYob3B0aW9ucz8uY3VycmVudFRhYj09XCJtaW5lXCIpe1xyXG4gICAgICAgIHF1ZXJ5LmVxdWFsVG8oXCJhdXRob3JcIixQYXJzZS5Vc2VyPy5jdXJyZW50KCk/LmlkKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBxdWVyeS5lcXVhbFRvKFwiaXNQdWJsaWNcIix0cnVlKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgbGlzdCA9IGF3YWl0IHF1ZXJ5LmZpbmQoKTtcclxuICAgICAgdGhpcy5sb2FkQXJ0Y2xlQW5hbHlzaXMobGlzdCk7IC8vIOWKoOi9veeCuei1nuOAgeaUtuiXj+eKtuaAgVxyXG4gICAgICBpZih0aGlzLmFydGljbGVMaXN0Py5sZW5ndGgpe1xyXG4gICAgICAgIHRoaXMuYXJ0aWNsZUxpc3QgPSB0aGlzLmFydGljbGVMaXN0LmNvbmNhdChsaXN0KTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5hcnRpY2xlTGlzdCA9IGxpc3Q7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuYXJ0aWNsZUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZUFydGljbGUob3B0aW9ucz86e1xyXG4gICAgbm9SZWRpcmVjdDpib29sZWFuXHJcbiAgfSl7XHJcbiAgICBsZXQgYXJ0aWNsZSA9IG5ldyB0aGlzLkFydGljbGUoKTtcclxuICAgIGFydGljbGUuc2V0KFwidGl0bGVcIix0aGlzLm5ld1RpdGxlKCkpXHJcbiAgICBcclxuICAgIC8vIOihpeWFheW4kOWll1xyXG4gICAgbGV0IGNpZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29tcGFueVwiKTtcclxuICAgIGlmKGNpZCl7XHJcbiAgICAgIGFydGljbGU/LnNldChcImNvbXBhbnlcIix7X190eXBlOlwiUG9pbnRlclwiLGNsYXNzTmFtZTpcIkNvbXBhbnlcIixvYmplY3RJZDpjaWR9KVxyXG4gICAgfVxyXG4gICAgLy8g6KGl5YWF5L2c6ICFXHJcbiAgICBpZighYXJ0aWNsZT8uZ2V0KFwiYXV0aG9yXCIpPy5pZCl7XHJcbiAgICAgIGFydGljbGU/LnNldChcImF1dGhvclwiLFBhcnNlLlVzZXIuY3VycmVudCgpPy50b1BvaW50ZXIoKSlcclxuICAgIH1cclxuICAgIGFydGljbGUgPSBhd2FpdCBhcnRpY2xlPy5zYXZlKCk7XHJcblxyXG4gICAgaWYoIW9wdGlvbnM/Lm5vUmVkaXJlY3Qpe1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJlZGl0b3JcIixcImFydGljbGVcIixhcnRpY2xlPy5pZF0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFydGljbGVcclxuICB9XHJcbiAgYXN5bmMgbmV3QXJ0aWNsZUJ5U3RvcnkoKXtcclxuICAgIFxyXG4gICAgbGV0IHNoYXJlRGF0YTphbnkgPSB7fVxyXG4gICAgc2hhcmVEYXRhLmNyZWF0ZU5ld0RyYWZ0ID0gdHJ1ZVxyXG4gICAgbGV0IGFydGljbGU6YW55ID0gYXdhaXQgdGhpcy5jcmVhdGVBcnRpY2xlKHtub1JlZGlyZWN0OnRydWV9KVxyXG4gICAgdGFza0FydGljbGVHZW5lcmF0aW9uKCgpPT57fSx7XHJcbiAgICAgIGRpYWxvZzp0aGlzLmRpYWxvZyxcclxuICAgICAgbW9kYWxDdHJsOnRoaXMubW9kYWxDdHJsLFxyXG4gICAgICBzaGFyZURhdGE6c2hhcmVEYXRhLFxyXG4gICAgICBhcnRpY2xlOmFydGljbGUsXHJcbiAgICAgIHBlcnNvblNlcnY6dGhpcy5wZXJzb25TZXJ2XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZXdUaXRsZSgpe1xyXG4gICAgbGV0IG5vdyA9IG5ldyBEYXRlKClcclxuICAgIHJldHVybiBgJHtub3cuZ2V0RnVsbFllYXIoKX0tJHtub3cuZ2V0TW9udGgoKSsxfS0ke25vdy5nZXREYXRlKCl9LeaWsOWIm+S9nGBcclxuICB9XHJcblxyXG4gIC8vIOWIhuS6q+aWh+eroFxyXG4gIGFzeW5jIHNoYXJlQXJ0aWNsZShhcnRpY2xlPzpQYXJzZS5PYmplY3Qpe1xyXG4gICAgaWYoIWFydGljbGU/LmlkKSByZXR1cm5cclxuICAgIGxldCBiYW5uZXJzID0gdGhpcy5nZXRBcnRpY2xlQmFubmVyKGFydGljbGUpXHJcbiAgICBsZXQgbGluayA9IFwiaHR0cHM6Ly93d3cueXViYW4uY28vYXBwL2FydGljbGUvXCIrYXJ0aWNsZT8uaWQrXCI/aW52aXRlPVwiK1BhcnNlLlVzZXIuY3VycmVudCgpPy5pZFxyXG4gICAgLy8g5b6u5L+h6K6+572u5pyL5Y+L5ZyI5YiG5LqrXHJcbiAgICBpZih0aGlzLnd4anNzZGsuaXNXZWNoYXQpe1xyXG4gICAgICB0aGlzLmluaXRXeFNoYXJlSW5mbyhhcnRpY2xlKTtcclxuICAgIH1lbHNle1xyXG4gICAgICAvLyDmma7pgJrlpI3liLbpk77mjqXlnLDlnYBcclxuICAgICAgbGV0IHNoYXJlVGV4dCA9IGAke2FydGljbGU/LmdldChcInRpdGxlXCIpfSAke2xpbmt9IFBPV0VSRUQgQlkg6Ieq5Lyg6K+t5Ly0YFxyXG4gICAgICB0aGlzLmNsaXBib2FyZC5jb3B5VG9DbGlwYm9hcmQoc2hhcmVUZXh0KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFd4U2hhcmVJbmZvKGFydGljbGU6UGFyc2UuT2JqZWN0KXtcclxuICAgICAgbGV0IGJhbm5lcnMgPSB0aGlzLmdldEFydGljbGVCYW5uZXIoYXJ0aWNsZSlcclxuICAgICAgbGV0IGF2YXRhciA9IFBhcnNlLlVzZXIuY3VycmVudCgpPy5nZXQoXCJhdmF0YXJcIilcclxuICAgICAgbGV0IGxpbmsgPSBcImh0dHBzOi8vd3d3Lnl1YmFuLmNvL2FwcC9hcnRpY2xlL1wiK2FydGljbGU/LmlkK1wiP2ludml0ZT1cIitQYXJzZS5Vc2VyLmN1cnJlbnQoKT8uaWRcclxuICAgICAgLy8g5b6u5L+h6K6+572u5pyL5Y+L5ZyI5YiG5LqrXHJcbiAgICAgIGlmKHRoaXMud3hqc3Nkay5pc1dlY2hhdCl7XHJcbiAgICAgICAgbGV0IHNoYXJlSW5mbyA9IHtcclxuICAgICAgICAgICAgdGl0bGU6IGFydGljbGU/LmdldChcInRpdGxlXCIpLFxyXG4gICAgICAgICAgICBkZXNjOiBhcnRpY2xlPy5nZXQoXCJkZXNjXCIpLFxyXG4gICAgICAgICAgICBsaW5rOiBsaW5rLFxyXG4gICAgICAgICAgICB0eXBlOiBcImxpbmtcIixcclxuICAgICAgICAgICAgaW1nVXJsOiBiYW5uZXJzWzBdIHx8IGF2YXRhciB8fFwiaHR0cHM6Ly9maWxlLnl1YmFuLmNvL2ltZy9pY29uLnBuZ1wiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8g6K6+572u5oiQ5YqfXHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WIhuS6q+aIkOWKnycpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfliIbkuqvlpLHotKUnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY2FuY2VsOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WPlua2iOWIhuS6qycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy53eGpzc2RrLnNldEN1cnJlbnRQYWdlU2hhcmVJbmZvKHNoYXJlSW5mbylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOiOt+WPluaWh+eroOi9ruaSreWbvlxyXG4gIGdldEFydGljbGVCYW5uZXIoYXJ0aWNsZT86UGFyc2UuT2JqZWN0KXtcclxuICAgIGxldCBiYW5uZXJMaXN0OnN0cmluZ1tdID0gW11cclxuICAgIGxldCBpbWFnZTpzdHJpbmcgPSBhcnRpY2xlPy5nZXQoXCJpbWFnZVwiKSBcclxuICAgIGlmKGltYWdlKSBiYW5uZXJMaXN0LnB1c2goaW1hZ2UpO1xyXG4gICAgYmFubmVyTGlzdCA9IGJhbm5lckxpc3QuY29uY2F0KGFydGljbGU/LmdldChcImNvdmVyXCIpIHx8IFtdKVxyXG4gICAgY29uc29sZS5sb2coXCJiYW5uZXJMaXN0XCIsYmFubmVyTGlzdClcclxuICAgIHJldHVybiBiYW5uZXJMaXN0XHJcbiAgfVxyXG5cclxuICAvLyDliqDovb1saWtlTWFwIGNvbGxlY3RNYXBcclxuICBhc3luYyBsb2FkQXJ0Y2xlQW5hbHlzaXMoYXJ0aWNsZUxpc3Q6UGFyc2UuT2JqZWN0W10pe1xyXG4gICAgbGV0IHVpZCA9IFBhcnNlLlVzZXIuY3VycmVudCgpPy5pZFxyXG4gICAgaWYoIXVpZCkgcmV0dXJuXHJcbiAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlTGlrZVwiKTtcclxuICAgIHF1ZXJ5LnNlbGVjdChcImFydGljbGVcIixcInR5cGVcIilcclxuICAgIHF1ZXJ5LmVxdWFsVG8oXCJ1c2VyXCIsdWlkKVxyXG4gICAgcXVlcnkubm90RXF1YWxUbyhcImlzRGVsZXRlZFwiLHRydWUpXHJcbiAgICBxdWVyeS5jb250YWluZWRJbihcImFydGljbGVcIixhcnRpY2xlTGlzdD8ubWFwKGl0ZW09Pml0ZW0/LmlkKSk7XHJcbiAgICBsZXQgbGlzdCA9IGF3YWl0IHF1ZXJ5LmZpbmQoKTtcclxuICAgIGxpc3QuZm9yRWFjaChpdGVtPT57XHJcbiAgICAgIGxldCBhaWQgPSBpdGVtPy5nZXQoXCJhcnRpY2xlXCIpPy5pZCB8fCBpdGVtPy5nZXQoXCJhcnRpY2xlXCIpPy5vYmplY3RJZFxyXG4gICAgICBpZihpdGVtPy5nZXQoXCJ0eXBlXCIpPT1cImNvbGxlY3RcIil7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0TWFwW2FpZF0gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKGl0ZW0/LmdldChcInR5cGVcIik9PVwibGlrZVwiKXtcclxuICAgICAgICB0aGlzLmxpa2VNYXBbYWlkXSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIOa1j+iniOaWh+eroFxyXG4gIHZpZXdBcnRpY2xlKGFydGljbGU6UGFyc2UuT2JqZWN0KXtcclxuICAgIGlmKCFhcnRpY2xlPy5pZCkgcmV0dXJuXHJcbiAgICBhcnRpY2xlLmluY3JlbWVudChcInZpZXdDb3VudFwiKTtcclxuICAgIGFydGljbGUuc2F2ZSgpO1xyXG4gIH1cclxuICAvLyDngrnotZ7mlofnq6AgKyDmlLbol4/mlofnq6BcclxuICBsaWtlTWFwOmFueSA9IHt9XHJcbiAgQXJ0aWNsZUxpa2UgPSBQYXJzZS5PYmplY3QuZXh0ZW5kKFwiQXJ0aWNsZUxpa2VcIik7XHJcbiAgYXN5bmMgbGlrZUFydGljbGUoYXJ0aWNsZT86UGFyc2UuT2JqZWN0LHR5cGU6c3RyaW5nPVwibGlrZVwiKXtcclxuICAgIGlmKCFhcnRpY2xlPy5pZCkgcmV0dXJuXHJcbiAgICBpZihQYXJzZS5Vc2VyLmN1cnJlbnQoKT8uaWQpe1xyXG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlTGlrZVwiKVxyXG4gICAgICBxdWVyeS5lcXVhbFRvKFwidXNlclwiLFBhcnNlLlVzZXIuY3VycmVudCgpKTtcclxuICAgICAgcXVlcnkuZXF1YWxUbyhcInR5cGVcIix0eXBlKTtcclxuICAgICAgcXVlcnkuZXF1YWxUbyhcImFydGljbGVcIixhcnRpY2xlPy5pZCk7XHJcbiAgICAgIGxldCBsaWtlOlBhcnNlLk9iamVjdHx1bmRlZmluZWQgPSBhd2FpdCBxdWVyeS5maXJzdCgpO1xyXG4gICAgICBpZighbGlrZT8uaWQpe1xyXG4gICAgICAgIGxpa2UgPSBuZXcgdGhpcy5BcnRpY2xlTGlrZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOiuvue9rueCuei1nlxyXG4gICAgICBsaWtlPy5zZXQoXCJ0eXBlXCIsdHlwZSk7XHJcbiAgICAgIGxpa2U/LnNldChcInVzZXJcIixQYXJzZS5Vc2VyLmN1cnJlbnQoKSk7XHJcbiAgICAgIGxpa2U/LnNldChcImFydGljbGVcIixhcnRpY2xlLnRvUG9pbnRlcigpKTtcclxuXHJcbiAgICAgIGlmKGxpa2U/LmdldChcImlzRGVsZXRlZFwiKSA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgIGxpa2U/LnNldChcImlzRGVsZXRlZFwiLGZhbHNlKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgbGlrZT8uc2V0KFwiaXNEZWxldGVkXCIsIWxpa2UuZ2V0KFwiaXNEZWxldGVkXCIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpKXtcclxuICAgICAgICBsaWtlPy5zZXQoXCJjb21wYW55XCIse19fdHlwZTpcIlBvaW50ZXJcIixjbGFzc05hbWU6XCJDb21wYW55XCIsb2JqZWN0SWQ6bG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpfSlcclxuICAgICAgfVxyXG4gICAgICBsaWtlID0gYXdhaXQgbGlrZT8uc2F2ZSgpXHJcbiAgICAgIGlmKHR5cGU9PVwibGlrZVwiKXtcclxuICAgICAgICB0aGlzLmxpa2VNYXBbYXJ0aWNsZT8uaWRdID0gIWxpa2U/LmdldChcImlzRGVsZXRlZFwiKTtcclxuICAgICAgfVxyXG4gICAgICBpZih0eXBlPT1cImNvbGxlY3RcIil7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0TWFwW2FydGljbGU/LmlkXSA9ICFsaWtlPy5nZXQoXCJpc0RlbGV0ZWRcIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWQjOatpeeCuei1nuaVsFxyXG4gICAgICBsZXQgcWNvdW50ID0gbmV3IFBhcnNlLlF1ZXJ5KFwiQXJ0aWNsZUxpa2VcIik7XHJcbiAgICAgIHFjb3VudC5ub3RFcXVhbFRvKFwiaXNEZWxldGVkXCIsdHJ1ZSk7XHJcbiAgICAgIHFjb3VudC5lcXVhbFRvKFwidHlwZVwiLHR5cGUpO1xyXG4gICAgICBxY291bnQuZXF1YWxUbyhcImFydGljbGVcIixhcnRpY2xlPy5pZCk7XHJcbiAgICAgIGlmKHR5cGU9PVwibGlrZVwiKXtcclxuICAgICAgICBhcnRpY2xlLnNldChcImxpa2VDb3VudFwiLChhd2FpdCBxY291bnQuY291bnQoKSl8fDApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHR5cGU9PVwiY29sbGVjdFwiKXtcclxuICAgICAgICBhcnRpY2xlLnNldChcImNvbGxlY3RDb3VudFwiLChhd2FpdCBxY291bnQuY291bnQoKSl8fDApO1xyXG4gICAgICB9XHJcbiAgICAgIGFydGljbGUgPSBhd2FpdCBhcnRpY2xlLnNhdmUoKTtcclxuICAgXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOaUtuiXj+aWh+eroFxyXG4gIGNvbGxlY3RNYXA6YW55ID0ge31cclxuICAvLyBBcnRpY2xlQ29sbGVjdCA9IFBhcnNlLk9iamVjdC5leHRlbmQoXCJBcnRpY2xlQ29sbGVjdFwiKTtcclxuICAvLyBhc3luYyBjb2xsZWN0QXJ0aWNsZShhcnRpY2xlPzpQYXJzZS5PYmplY3Qpe1xyXG4gIC8vICAgaWYoIWFydGljbGU/LmlkKSByZXR1cm5cclxuICAvLyAgIGlmKFBhcnNlLlVzZXIuY3VycmVudCgpPy5pZCl7XHJcbiAgLy8gICAgIGxldCBxdWVyeSA9IG5ldyBQYXJzZS5RdWVyeShcIkFydGljbGVDb2xsZWN0XCIpXHJcbiAgLy8gICAgIHF1ZXJ5LmVxdWFsVG8oXCJ1c2VyXCIsUGFyc2UuVXNlci5jdXJyZW50KCkpO1xyXG4gIC8vICAgICBxdWVyeS5lcXVhbFRvKFwiYXJ0aWNsZVwiLGFydGljbGU/LmlkKTtcclxuICAvLyAgICAgbGV0IGNvbGxlY3Q6UGFyc2UuT2JqZWN0fHVuZGVmaW5lZCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KCk7XHJcbiAgLy8gICAgIGlmKCFjb2xsZWN0Py5pZCl7XHJcbiAgLy8gICAgICAgY29sbGVjdCA9IG5ldyB0aGlzLkFydGljbGVDb2xsZWN0KCk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgLy8g6K6+572u54K56LWeXHJcbiAgLy8gICAgIGNvbGxlY3Q/LnNldChcInVzZXJcIixQYXJzZS5Vc2VyLmN1cnJlbnQoKSk7XHJcbiAgLy8gICAgIGNvbGxlY3Q/LnNldChcImFydGljbGVcIixhcnRpY2xlLnRvUG9pbnRlcigpKTtcclxuXHJcbiAgLy8gICAgIGlmKGNvbGxlY3Q/LmdldChcImlzRGVsZXRlZFwiKSA9PSB1bmRlZmluZWQpe1xyXG4gIC8vICAgICAgIGNvbGxlY3Q/LnNldChcImlzRGVsZXRlZFwiLGZhbHNlKTtcclxuICAvLyAgICAgfWVsc2V7XHJcbiAgLy8gICAgICAgY29sbGVjdD8uc2V0KFwiaXNEZWxldGVkXCIsIWNvbGxlY3QuZ2V0KFwiaXNEZWxldGVkXCIpKTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpKXtcclxuICAvLyAgICAgICBjb2xsZWN0Py5zZXQoXCJjb21wYW55XCIse19fdHlwZTpcIlBvaW50ZXJcIixjbGFzc05hbWU6XCJDb21wYW55XCIsb2JqZWN0SWQ6bG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpfSlcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb2xsZWN0ID0gYXdhaXQgY29sbGVjdD8uc2F2ZSgpXHJcbiAgLy8gICAgIHRoaXMuY29sbGVjdE1hcFthcnRpY2xlPy5pZF0gPSAhY29sbGVjdD8uZ2V0KFwiaXNEZWxldGVkXCIpO1xyXG5cclxuICAvLyAgICAgLy8g5ZCM5q2l54K56LWe5pWwXHJcbiAgLy8gICAgIGxldCBxY291bnQgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlQ29sbGVjdFwiKTtcclxuICAvLyAgICAgcWNvdW50Lm5vdEVxdWFsVG8oXCJpc0RlbGV0ZWRcIix0cnVlKTtcclxuICAvLyAgICAgcWNvdW50LmVxdWFsVG8oXCJhcnRpY2xlXCIsYXJ0aWNsZT8uaWQpO1xyXG4gIC8vICAgICBhcnRpY2xlLnNldChcImNvbGxlY3RDb3VudFwiLChhd2FpdCBxY291bnQuY291bnQoKSl8fDApO1xyXG4gIC8vICAgICBhcnRpY2xlID0gYXdhaXQgYXJ0aWNsZS5zYXZlKCk7XHJcbiAgIFxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxufVxyXG4iXX0=
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/text/fm-article-editor/article.service.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{Injectable}from"@angular/core";import{Router}from"@angular/router";import{ClipboardService}from"../../aigc/comp-markdown-preview/clipboard.service";import{WechatJssdkService}from"../../social/wechat/wechat-jssdk.service";import{FmodeParse}from"@fmode/parse";import{taskArticleGeneration}from"./task-article-generation";import{MatDialog}from"@angular/material/dialog";import{ModalController}from"@ionic/angular/standalone";import{PersonService}from"../../person/person.service";import*as i0 from"@angular/core";import*as i1 from"@angular/router";import*as i2 from"../../social/wechat/wechat-jssdk.service";import*as i3 from"../../aigc/comp-markdown-preview/clipboard.service";import*as i4 from"@angular/material/dialog";import*as i5 from"@ionic/angular/standalone";import*as i6 from"../../person/person.service";const Parse=FmodeParse.with("nova");export class ArticleService{constructor(e,t,i,r,a,s){this.router=e,this.wxjssdk=t,this.clipboard=i,this.dialog=r,this.modalCtrl=a,this.personServ=s,this.Article=new Parse.Object("Article"),this.articleList=[],this.limit=20,this.skip=0,this.likeMap={},this.ArticleLike=Parse.Object.extend("ArticleLike"),this.collectMap={}}async loadArticle(e){if(e.currentTab=e.currentTab||"article",e.isNew=e.isNew||!1,!Parse.User.current()?.id)return[];e?.isNew?(this.articleList=[],this.skip=0):this.skip+=this.articleList?.length;let t=new Parse.Query("Article");t.include("chapter.book.person","author.user"),t.addDescending("createdAt"),t.skip(this.skip),t.notEqualTo("isDeleted",!0),"mine"==e?.currentTab?t.equalTo("author",Parse.User?.current()?.id):t.equalTo("isPublic",!0);let i=await t.find();return this.loadArtcleAnalysis(i),this.articleList?.length?this.articleList=this.articleList.concat(i):this.articleList=i,this.articleList}async createArticle(e){let t=new Parse.Object("Article");t.set("title",this.newTitle());let i=localStorage.getItem("company");return i&&t?.set("company",{__type:"Pointer",className:"Company",objectId:i}),t?.get("author")?.id||t?.set("author",Parse.User.current()?.toPointer()),t=await(t?.save()),e?.noRedirect||this.router.navigate(["editor","article",t?.id]),t}async newArticleByStory(){let e={createNewDraft:!0},t=await this.createArticle({noRedirect:!0});taskArticleGeneration((()=>{}),{dialog:this.dialog,modalCtrl:this.modalCtrl,shareData:e,article:t,personServ:this.personServ})}newTitle(){let e=new Date;return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}-新创作`}async shareArticle(e){if(!e?.id)return;this.getArticleBanner(e);let t="https://www.yuban.co/app/article/"+e?.id+"?invite="+Parse.User.current()?.id;if(this.wxjssdk.isWechat)this.initWxShareInfo(e);else{let i=`${e?.get("title")} ${t} POWERED BY 自传语伴`;this.clipboard.copyToClipboard(i)}}initWxShareInfo(e){let t=this.getArticleBanner(e),i=Parse.User.current()?.get("avatar"),r="https://www.yuban.co/app/article/"+e?.id+"?invite="+Parse.User.current()?.id;if(this.wxjssdk.isWechat){let a={title:e?.get("title"),desc:e?.get("desc"),link:r,type:"link",imgUrl:t[0]||i||"https://file.yuban.co/img/icon.png",success:()=>{console.log("分享成功")},error:()=>{console.log("分享失败")},cancel:()=>{console.log("取消分享")}};this.wxjssdk.setCurrentPageShareInfo(a)}}getArticleBanner(e){let t=[],i=e?.get("image");return i&&t.push(i),t=t.concat(e?.get("cover")||[]),console.log("bannerList",t),t}async loadArtcleAnalysis(e){let t=Parse.User.current()?.id;if(!t)return;let i=new Parse.Query("ArticleLike");i.select("article","type"),i.equalTo("user",t),i.notEqualTo("isDeleted",!0),i.containedIn("article",e?.map((e=>e?.id))),(await i.find()).forEach((e=>{let t=e?.get("article")?.id||e?.get("article")?.objectId;"collect"==e?.get("type")&&(this.collectMap[t]=!0),"like"==e?.get("type")&&(this.likeMap[t]=!0)}))}viewArticle(e){e?.id&&(e.increment("viewCount"),e.save())}async likeArticle(e,t="like"){if(e?.id&&Parse.User.current()?.id){let i=new Parse.Query("ArticleLike");i.equalTo("user",Parse.User.current()),i.equalTo("type",t),i.equalTo("article",e?.id);let r=await i.first();r?.id||(r=new Parse.Object("ArticleLike")),r?.set("type",t),r?.set("user",Parse.User.current()),r?.set("article",e.toPointer()),null==r?.get("isDeleted")?r?.set("isDeleted",!1):r?.set("isDeleted",!r.get("isDeleted")),localStorage.getItem("company")&&r?.set("company",{__type:"Pointer",className:"Company",objectId:localStorage.getItem("company")}),r=await(r?.save()),"like"==t&&(this.likeMap[e?.id]=!r?.get("isDeleted")),"collect"==t&&(this.collectMap[e?.id]=!r?.get("isDeleted"));let a=new Parse.Query("ArticleLike");a.notEqualTo("isDeleted",!0),a.equalTo("type",t),a.equalTo("article",e?.id),"like"==t&&e.set("likeCount",await a.count()||0),"collect"==t&&e.set("collectCount",await a.count()||0),e=await e.save()}}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ArticleService,deps:[{token:i1.Router},{token:i2.WechatJssdkService},{token:i3.ClipboardService},{token:i4.MatDialog},{token:i5.ModalController},{token:i6.PersonService}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ArticleService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ArticleService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.Router},{type:i2.WechatJssdkService},{type:i3.ClipboardService},{type:i4.MatDialog},{type:i5.ModalController},{type:i6.PersonService}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2FydGljbGUuc2VydmljZS5tanM=`
|
|
10
|
+
|
|
@@ -1,74 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import { EditUploadModule } from '../../../person/edit-upload/edit-upload.module';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
5
|
-
import Parse from "parse";
|
|
6
|
-
import { ModalController } from '@ionic/angular/standalone';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@ionic/angular/standalone";
|
|
9
|
-
import * as i2 from "../../../person/edit-upload/edit-upload.component";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
export class CompUploadBookBannersComponent {
|
|
12
|
-
constructor(modalCtrl) {
|
|
13
|
-
this.modalCtrl = modalCtrl;
|
|
14
|
-
}
|
|
15
|
-
ngOnInit() {
|
|
16
|
-
this.getArticle();
|
|
17
|
-
}
|
|
1
|
+
|
|
18
2
|
/**
|
|
19
|
-
*
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs
|
|
20
7
|
*/
|
|
21
|
-
changeBanner() {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
async getArticle() {
|
|
26
|
-
let query = new Parse.Query("Article");
|
|
27
|
-
// query.equalTo("company", "Svehl6FceL");
|
|
28
|
-
query.equalTo("objectId", this.articleId);
|
|
29
|
-
query.notEqualTo("isDeleted", true);
|
|
30
|
-
query.include("author");
|
|
31
|
-
this.article = await query.first();
|
|
32
|
-
console.log('article', this.article);
|
|
33
|
-
}
|
|
34
|
-
async saveSelection() {
|
|
35
|
-
if (!this.banner) {
|
|
36
|
-
console.log('没有上传封面图');
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
console.log('this.bookId', this.articleId); // 打印 articleId,确保它是有效的
|
|
40
|
-
// 查询 Article 表中与 articleId 相关的记录
|
|
41
|
-
let articleQuery = new Parse.Query('Article');
|
|
42
|
-
articleQuery.equalTo('objectId', this.articleId);
|
|
43
|
-
try {
|
|
44
|
-
// 获取第一条匹配的记录
|
|
45
|
-
let article = await articleQuery.first();
|
|
46
|
-
if (article) {
|
|
47
|
-
// 如果找到了相关的章节,设置封面图
|
|
48
|
-
article.set('image', this.banner);
|
|
49
|
-
// 保存到数据库
|
|
50
|
-
await article.save();
|
|
51
|
-
console.log('封面图保存成功');
|
|
52
|
-
// 关闭模态框并传递数据到父组件
|
|
53
|
-
await this.modalCtrl.dismiss({ success: true, banner: this.banner }, "confirm");
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
console.log('未找到相关章节');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
console.error('保存失败', error);
|
|
61
|
-
// 处理错误,弹出提示
|
|
62
|
-
alert('保存失败');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompUploadBookBannersComponent, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
66
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CompUploadBookBannersComponent, isStandalone: true, selector: "app-comp-upload-book-banners", inputs: { articleId: "articleId" }, ngImport: i0, template: "<div class=\"background\">\r\n <div class=\"fixed-navbar\">\r\n <div class=\"left\">\r\n </div>\r\n <div class=\"center\">\r\n \u5C01\u9762\u4E0A\u4F20\r\n </div>\r\n <div class=\"right\" (click)=\"saveSelection()\">\u4FDD\u5B58</div>\r\n </div>\r\n <div class=\"content\">\r\n <div style=\"display: flex; flex-direction: row;width: 50%;text-align: center;margin-top: 20px;margin-left: 13%;\">\r\n <div class=\"upload_avatar\">\r\n <fm-edit-upload *ngIf=\"!banner\" [(file)]=\"banner\" [multi]=\"true\"></fm-edit-upload>\r\n <img style=\"width: 110px;height: 110px;object-fit: cover;\" *ngIf=\"banner\"\r\n [src]=\"banner\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"banner\" (click)=\"changeBanner()\" style=\"margin-left: -12px;\r\n font-size: 11px;\r\n margin-top: -12px;\r\n height: 24px;\r\n cursor: pointer;\r\n width: 24px;\r\n border-radius: 50%;\r\n background-color: #ccc;\r\n color: #fff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\">\r\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".background{background:linear-gradient(#040a15,#0e254b);width:100%;height:100%;margin:0;padding:0;overflow-y:auto;overflow-x:hidden}.background .fixed-navbar{height:8vh;position:sticky;top:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:999}.background .fixed-navbar .left{flex:1;display:flex;justify-content:flex-start;align-items:center;color:#fff}.background .fixed-navbar .center{color:#fff;font-size:1.3rem;font-weight:700}.background .fixed-navbar .right{display:flex;justify-content:flex-end;margin-right:20px;font-size:1rem;flex:1}.background .content{padding:8% 5%}\n"], dependencies: [{ kind: "ngmodule", type: EditUploadModule }, { kind: "component", type: i2.EditUploadComponent, selector: "fm-edit-upload", inputs: ["files", "dragdrop", "multi", "max_file_size", "type", "avatarType", "company", "file", "fileList", "path"], outputs: ["filesChange", "fileChange", "fileListChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }] }); }
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompUploadBookBannersComponent, decorators: [{
|
|
69
|
-
type: Component,
|
|
70
|
-
args: [{ selector: 'app-comp-upload-book-banners', standalone: true, imports: [EditUploadModule, CommonModule, FormsModule], template: "<div class=\"background\">\r\n <div class=\"fixed-navbar\">\r\n <div class=\"left\">\r\n </div>\r\n <div class=\"center\">\r\n \u5C01\u9762\u4E0A\u4F20\r\n </div>\r\n <div class=\"right\" (click)=\"saveSelection()\">\u4FDD\u5B58</div>\r\n </div>\r\n <div class=\"content\">\r\n <div style=\"display: flex; flex-direction: row;width: 50%;text-align: center;margin-top: 20px;margin-left: 13%;\">\r\n <div class=\"upload_avatar\">\r\n <fm-edit-upload *ngIf=\"!banner\" [(file)]=\"banner\" [multi]=\"true\"></fm-edit-upload>\r\n <img style=\"width: 110px;height: 110px;object-fit: cover;\" *ngIf=\"banner\"\r\n [src]=\"banner\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"banner\" (click)=\"changeBanner()\" style=\"margin-left: -12px;\r\n font-size: 11px;\r\n margin-top: -12px;\r\n height: 24px;\r\n cursor: pointer;\r\n width: 24px;\r\n border-radius: 50%;\r\n background-color: #ccc;\r\n color: #fff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\">\r\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".background{background:linear-gradient(#040a15,#0e254b);width:100%;height:100%;margin:0;padding:0;overflow-y:auto;overflow-x:hidden}.background .fixed-navbar{height:8vh;position:sticky;top:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:999}.background .fixed-navbar .left{flex:1;display:flex;justify-content:flex-start;align-items:center;color:#fff}.background .fixed-navbar .center{color:#fff;font-size:1.3rem;font-weight:700}.background .fixed-navbar .right{display:flex;justify-content:flex-end;margin-right:20px;font-size:1rem;flex:1}.background .content{padding:8% 5%}\n"] }]
|
|
71
|
-
}], ctorParameters: () => [{ type: i1.ModalController }], propDecorators: { articleId: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcC11cGxvYWQtYm9vay1iYW5uZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdGV4dC9mbS1hcnRpY2xlLWVkaXRvci9jb21wLXVwbG9hZC1ib29rLWJhbm5lcnMvY29tcC11cGxvYWQtYm9vay1iYW5uZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdGV4dC9mbS1hcnRpY2xlLWVkaXRvci9jb21wLXVwbG9hZC1ib29rLWJhbm5lcnMvY29tcC11cGxvYWQtYm9vay1iYW5uZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFTNUQsTUFBTSxPQUFPLDhCQUE4QjtJQUl6QyxZQUNVLFNBQTBCO1FBQTFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO0lBQ2hDLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFHRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsMENBQTBDO1FBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QixPQUFPO1FBQ1gsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtRQUVuRSxpQ0FBaUM7UUFDakMsSUFBSSxZQUFZLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUM7WUFDRCxhQUFhO1lBQ2IsSUFBSSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFekMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixtQkFBbUI7Z0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFbEMsU0FBUztnQkFDVCxNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFdkIsaUJBQWlCO2dCQUNqQixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25GLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdCLFlBQVk7WUFDWixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7K0dBakVVLDhCQUE4QjttR0FBOUIsOEJBQThCLDRIQ2QzQyx1dENBaUNBLGt1QkRyQlksZ0JBQWdCLCtSQUFDLFlBQVksa0lBQUMsV0FBVzs7NEZBRXhDLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUMsWUFBWSxFQUFDLFdBQVcsQ0FBQztvRkFJM0MsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFZGl0VXBsb2FkTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vcGVyc29uL2VkaXQtdXBsb2FkL2VkaXQtdXBsb2FkLm1vZHVsZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgUGFyc2UgZnJvbSBcInBhcnNlXCI7XHJcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29tcC11cGxvYWQtYm9vay1iYW5uZXJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tcC11cGxvYWQtYm9vay1iYW5uZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb21wLXVwbG9hZC1ib29rLWJhbm5lcnMuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtFZGl0VXBsb2FkTW9kdWxlLENvbW1vbk1vZHVsZSxGb3Jtc01vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBVcGxvYWRCb29rQmFubmVyc0NvbXBvbmVudCAgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBhcnRpY2xlSWQ6IGFueTsgLy8g5o6l5pS25Lyg6YCS55qEIGFydGljbGVJZFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEFydGljbGUoKVxyXG4gIH1cclxuXHJcbiAgYmFubmVyXHJcbiAgLyoqXHJcbiAgICog5riF6Zmk5LiK5Lyg5qGG5bCB6Z2iXHJcbiAgICovXHJcbiAgY2hhbmdlQmFubmVyKCkge1xyXG4gICAgdGhpcy5iYW5uZXIgPSAnJztcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuYmFubmVyKTtcclxuICB9XHJcbiAgYXJ0aWNsZVxyXG4gIGFzeW5jIGdldEFydGljbGUoKSB7XHJcbiAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlXCIpO1xyXG4gICAgLy8gcXVlcnkuZXF1YWxUbyhcImNvbXBhbnlcIiwgXCJTdmVobDZGY2VMXCIpO1xyXG4gICAgcXVlcnkuZXF1YWxUbyhcIm9iamVjdElkXCIsIHRoaXMuYXJ0aWNsZUlkKTtcclxuICAgIHF1ZXJ5Lm5vdEVxdWFsVG8oXCJpc0RlbGV0ZWRcIiwgdHJ1ZSk7XHJcbiAgICBxdWVyeS5pbmNsdWRlKFwiYXV0aG9yXCIpO1xyXG4gICAgdGhpcy5hcnRpY2xlID0gYXdhaXQgcXVlcnkuZmlyc3QoKTtcclxuICAgIGNvbnNvbGUubG9nKCdhcnRpY2xlJywgdGhpcy5hcnRpY2xlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmVTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuYmFubmVyKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+ayoeacieS4iuS8oOWwgemdouWbvicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5ib29rSWQnLCB0aGlzLmFydGljbGVJZCk7IC8vIOaJk+WNsCBhcnRpY2xlSWTvvIznoa7kv53lroPmmK/mnInmlYjnmoRcclxuXHJcbiAgICAvLyDmn6Xor6IgQXJ0aWNsZSDooajkuK3kuI4gYXJ0aWNsZUlkIOebuOWFs+eahOiusOW9lVxyXG4gICAgbGV0IGFydGljbGVRdWVyeSA9IG5ldyBQYXJzZS5RdWVyeSgnQXJ0aWNsZScpO1xyXG4gICAgYXJ0aWNsZVF1ZXJ5LmVxdWFsVG8oJ29iamVjdElkJywgdGhpcy5hcnRpY2xlSWQpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgICAgLy8g6I635Y+W56ys5LiA5p2h5Yy56YWN55qE6K6w5b2VXHJcbiAgICAgICAgbGV0IGFydGljbGUgPSBhd2FpdCBhcnRpY2xlUXVlcnkuZmlyc3QoKTtcclxuXHJcbiAgICAgICAgaWYgKGFydGljbGUpIHtcclxuICAgICAgICAgICAgLy8g5aaC5p6c5om+5Yiw5LqG55u45YWz55qE56ug6IqC77yM6K6+572u5bCB6Z2i5Zu+XHJcbiAgICAgICAgICAgIGFydGljbGUuc2V0KCdpbWFnZScsIHRoaXMuYmFubmVyKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOS/neWtmOWIsOaVsOaNruW6k1xyXG4gICAgICAgICAgICBhd2FpdCBhcnRpY2xlLnNhdmUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+WwgemdouWbvuS/neWtmOaIkOWKnycpO1xyXG5cclxuICAgICAgICAgICAgLy8g5YWz6Zet5qih5oCB5qGG5bm25Lyg6YCS5pWw5o2u5Yiw54i257uE5Lu2XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubW9kYWxDdHJsLmRpc21pc3MoeyBzdWNjZXNzOiB0cnVlLCBiYW5uZXI6IHRoaXMuYmFubmVyIH0sXCJjb25maXJtXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmnKrmib7liLDnm7jlhbPnq6DoioInKTtcclxuICAgICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+S/neWtmOWksei0pScsIGVycm9yKTtcclxuICAgICAgICAvLyDlpITnkIbplJnor6/vvIzlvLnlh7rmj5DnpLpcclxuICAgICAgICBhbGVydCgn5L+d5a2Y5aSx6LSlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmaXhlZC1uYXZiYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjZW50ZXJcIj5cclxuICAgICAg5bCB6Z2i5LiK5LygXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiIChjbGljayk9XCJzYXZlU2VsZWN0aW9uKClcIj7kv53lrZg8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7d2lkdGg6IDUwJTt0ZXh0LWFsaWduOiBjZW50ZXI7bWFyZ2luLXRvcDogMjBweDttYXJnaW4tbGVmdDogMTMlO1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkX2F2YXRhclwiPlxyXG4gICAgICAgIDxmbS1lZGl0LXVwbG9hZCAqbmdJZj1cIiFiYW5uZXJcIiBbKGZpbGUpXT1cImJhbm5lclwiIFttdWx0aV09XCJ0cnVlXCI+PC9mbS1lZGl0LXVwbG9hZD5cclxuICAgICAgICA8aW1nIHN0eWxlPVwid2lkdGg6IDExMHB4O2hlaWdodDogMTEwcHg7b2JqZWN0LWZpdDogY292ZXI7XCIgKm5nSWY9XCJiYW5uZXJcIlxyXG4gICAgICAgICAgW3NyY109XCJiYW5uZXJcIiBhbHQ9XCJcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJiYW5uZXJcIiAoY2xpY2spPVwiY2hhbmdlQmFubmVyKClcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTJweDtcclxuICAgICAgICBmb250LXNpemU6IDExcHg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLTEycHg7XHJcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICB3aWR0aDogMjRweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+XHJcbiAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJjbG9zZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
8
|
+
import{Component,Input}from"@angular/core";import{EditUploadModule}from"../../../person/edit-upload/edit-upload.module";import{CommonModule}from"@angular/common";import{FormsModule}from"@angular/forms";import{FmodeParse}from"@fmode/parse";import{ModalController}from"@ionic/angular/standalone";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular/standalone";import*as i2 from"../../../person/edit-upload/edit-upload.component";import*as i3 from"@angular/common";const Parse=FmodeParse.with("nova");export class CompUploadBookBannersComponent{constructor(e){this.modalCtrl=e}ngOnInit(){this.getArticle()}changeBanner(){this.banner="",console.log(this.banner)}async getArticle(){let e=new Parse.Query("Article");e.equalTo("objectId",this.articleId),e.notEqualTo("isDeleted",!0),e.include("author"),this.article=await e.first(),console.log("article",this.article)}async saveSelection(){if(!this.banner)return void console.log("没有上传封面图");console.log("this.bookId",this.articleId);let e=new Parse.Query("Article");e.equalTo("objectId",this.articleId);try{let n=await e.first();n?(n.set("image",this.banner),await n.save(),console.log("封面图保存成功"),await this.modalCtrl.dismiss({success:!0,banner:this.banner},"confirm")):console.log("未找到相关章节")}catch(e){console.error("保存失败",e),alert("保存失败")}}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompUploadBookBannersComponent,deps:[{token:i1.ModalController}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:CompUploadBookBannersComponent,isStandalone:!0,selector:"app-comp-upload-book-banners",inputs:{articleId:"articleId"},ngImport:i0,template:'<div class="background">\n <div class="fixed-navbar">\n <div class="left">\n </div>\n <div class="center">\n 封面上传\n </div>\n <div class="right" (click)="saveSelection()">保存</div>\n </div>\n <div class="content">\n <div style="display: flex; flex-direction: row;width: 50%;text-align: center;margin-top: 20px;margin-left: 13%;">\n <div class="upload_avatar">\n <fm-edit-upload *ngIf="!banner" [(file)]="banner" [multi]="true"></fm-edit-upload>\n <img style="width: 110px;height: 110px;object-fit: cover;" *ngIf="banner"\n [src]="banner" alt="">\n </div>\n <div *ngIf="banner" (click)="changeBanner()" style="margin-left: -12px;\n font-size: 11px;\n margin-top: -12px;\n height: 24px;\n cursor: pointer;\n width: 24px;\n border-radius: 50%;\n background-color: #ccc;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;">\n <span nz-icon nzType="close" nzTheme="outline"></span>\n </div>\n </div>\n </div>\n</div>\n',styles:[".background{background:linear-gradient(#040a15,#0e254b);width:100%;height:100%;margin:0;padding:0;overflow-y:auto;overflow-x:hidden}.background .fixed-navbar{height:8vh;position:sticky;top:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:999}.background .fixed-navbar .left{flex:1;display:flex;justify-content:flex-start;align-items:center;color:#fff}.background .fixed-navbar .center{color:#fff;font-size:1.3rem;font-weight:700}.background .fixed-navbar .right{display:flex;justify-content:flex-end;margin-right:20px;font-size:1rem;flex:1}.background .content{padding:8% 5%}\n"],dependencies:[{kind:"ngmodule",type:EditUploadModule},{kind:"component",type:i2.EditUploadComponent,selector:"fm-edit-upload",inputs:["files","dragdrop","multi","max_file_size","type","avatarType","company","file","fileList","path"],outputs:["filesChange","fileChange","fileListChange"]},{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i3.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:FormsModule}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompUploadBookBannersComponent,decorators:[{type:Component,args:[{selector:"app-comp-upload-book-banners",standalone:!0,imports:[EditUploadModule,CommonModule,FormsModule],template:'<div class="background">\n <div class="fixed-navbar">\n <div class="left">\n </div>\n <div class="center">\n 封面上传\n </div>\n <div class="right" (click)="saveSelection()">保存</div>\n </div>\n <div class="content">\n <div style="display: flex; flex-direction: row;width: 50%;text-align: center;margin-top: 20px;margin-left: 13%;">\n <div class="upload_avatar">\n <fm-edit-upload *ngIf="!banner" [(file)]="banner" [multi]="true"></fm-edit-upload>\n <img style="width: 110px;height: 110px;object-fit: cover;" *ngIf="banner"\n [src]="banner" alt="">\n </div>\n <div *ngIf="banner" (click)="changeBanner()" style="margin-left: -12px;\n font-size: 11px;\n margin-top: -12px;\n height: 24px;\n cursor: pointer;\n width: 24px;\n border-radius: 50%;\n background-color: #ccc;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;">\n <span nz-icon nzType="close" nzTheme="outline"></span>\n </div>\n </div>\n </div>\n</div>\n',styles:[".background{background:linear-gradient(#040a15,#0e254b);width:100%;height:100%;margin:0;padding:0;overflow-y:auto;overflow-x:hidden}.background .fixed-navbar{height:8vh;position:sticky;top:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:999}.background .fixed-navbar .left{flex:1;display:flex;justify-content:flex-start;align-items:center;color:#fff}.background .fixed-navbar .center{color:#fff;font-size:1.3rem;font-weight:700}.background .fixed-navbar .right{display:flex;justify-content:flex-end;margin-right:20px;font-size:1rem;flex:1}.background .content{padding:8% 5%}\n"]}]}],ctorParameters:()=>[{type:i1.ModalController}],propDecorators:{articleId:[{type:Input}]}});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2NvbXAtdXBsb2FkLWJvb2stYmFubmVycy9jb21wLXVwbG9hZC1ib29rLWJhbm5lcnMuY29tcG9uZW50Lm1qcw==`
|
|
10
|
+
|