<commit_before><!-- Profile picture -->
<div class="user-image">
    <img class="img-thumbnail img-circle"
         ng-src="{{ usersFactory.getUserImage(message.sender) }}">
</div>

<!-- Content -->
<div class="message-content">

    <!-- Sender -->
    <div class="from">
        <a ui-sref="app.groups.details({groupName: vm.groupName})"></a>

        <!-- Username -->
        <a href
           ui-sref="app.profiles.user({username: message.sender})"
           ng-click="goTo.view('app.profiles.user', {username: message.sender})"
           class="atom-link user-username"
           ng-class="{'atom-link-yellow': message.sender == vm.user.username}">
            {{ vm.methods.getUserAlias(message.sender) || '@' + message.sender }}
        </a>

        <!-- Send date -->
        <span class="sent-date">{{ message.sent | date: 'HH:mm' }}</span>

        <!-- When edited -->
        <span ng-show="message.edited != 0"
              class="edited">
            {{ 'chat_message_edited_on' | translate }}
            {{ message.edited | date: 'HH:mm' }}
        </span>
    </div>

    <!-- Message content -->
    <div ng-include="'views/chat/messages/chat.messages.content.html'"></div>
</div>

<!-- Action bar -->
<div class="action-bar">

    <!-- Play -->
    <play-action play-action-display="vm.methods.isAudioMedia(message)"
                 play-action-message="message">
    </play-action>

    <!-- Pause -->
    <pause-action pause-action-display="vm.methods.isAudioMedia(message)"
                  pause-action-message="message">
    </pause-action>

    <!-- Stop -->
    <stop-action stop-action-display="vm.methods.isAudioMedia(message)"
                 stop-action-message="message">
    </stop-action>

    <!-- Volume -->
    <volume-action volume-action-display="vm.methods.isAudioMedia(message)"></volume-action>

    <!-- Edit -->
    <edit-action edit-action-display="message.category == 'text' && (message.sender == vm.user.username || vm.isUserAdmin)"
                 edit-action-on-click="vm.methods.stopAllEdit(); vm.methods.startEdit(message._id);">
    </edit-action>

    <!-- Answer (quote) -->
    <answer-action answer-action-display="message.sender != vm.user.username && message.category == 'text'"></answer-action>

    <!-- Copy the text -->
    <copy-action copy-action-message-id="'message-user-' + message._id"
                 copy-action-display="message.category == 'text'">
    </copy-action>

    <!-- Talk with -->
    <chat-action chat-action-display="message.sender != vm.user.username && $state.current.name != 'app.chat.user'"
                 chat-action-on-click="goTo.view('app.chat.user', {username: message.sender})">
    </chat-action>

    <!-- Zoom -->
    <zoom-action zoom-action-display="message.category == 'image'"
                 zoom-action-image="message.content">
    </zoom-action>

    <!-- Accordion -->
    <accordion-action accordion-action-display="vm.methods.isMedia(message)"
                      accordion-action-expanded="message.expanded"
                      accordion-action-on-click="vm.methods.onToggleSingleExpanded()">
    </accordion-action>

    <!-- Download -->
    <download-action download-action-display="vm.methods.isMedia(message)"
                     download-action-src="{{ message.content.url }}"
                     download-action-name="{{ message.content.fullName }}">
    </download-action>

    <!-- Remove -->
    <remove-action remove-action-display="message.sender == vm.user.username"
                   remove-action-message="message">
    </remove-action>
</div><commit_msg>If the current user is admin of the channel, he can delete the messages from other members.<commit_after><!-- Profile picture -->
<div class="user-image">
    <img class="img-thumbnail img-circle"
         ng-src="{{ usersFactory.getUserImage(message.sender) }}">
</div>

<!-- Content -->
<div class="message-content">

    <!-- Sender -->
    <div class="from">
        <a ui-sref="app.groups.details({groupName: vm.groupName})"></a>

        <!-- Username -->
        <a href
           ui-sref="app.profiles.user({username: message.sender})"
           ng-click="goTo.view('app.profiles.user', {username: message.sender})"
           class="atom-link user-username"
           ng-class="{'atom-link-yellow': message.sender == vm.user.username}">
            {{ vm.methods.getUserAlias(message.sender) || '@' + message.sender }}
        </a>

        <!-- Send date -->
        <span class="sent-date">{{ message.sent | date: 'HH:mm' }}</span>

        <!-- When edited -->
        <span ng-show="message.edited != 0"
              class="edited">
            {{ 'chat_message_edited_on' | translate }}
            {{ message.edited | date: 'HH:mm' }}
        </span>
    </div>

    <!-- Message content -->
    <div ng-include="'views/chat/messages/chat.messages.content.html'"></div>
</div>

<!-- Action bar -->
<div class="action-bar">

    <!-- Play -->
    <play-action play-action-display="vm.methods.isAudioMedia(message)"
                 play-action-message="message">
    </play-action>

    <!-- Pause -->
    <pause-action pause-action-display="vm.methods.isAudioMedia(message)"
                  pause-action-message="message">
    </pause-action>

    <!-- Stop -->
    <stop-action stop-action-display="vm.methods.isAudioMedia(message)"
                 stop-action-message="message">
    </stop-action>

    <!-- Volume -->
    <volume-action volume-action-display="vm.methods.isAudioMedia(message)"></volume-action>

    <!-- Edit -->
    <edit-action edit-action-display="message.category == 'text' && (message.sender == vm.user.username || vm.isUserAdmin)"
                 edit-action-on-click="vm.methods.stopAllEdit(); vm.methods.startEdit(message._id);">
    </edit-action>

    <!-- Answer (quote) -->
    <answer-action answer-action-display="message.sender != vm.user.username && message.category == 'text'"></answer-action>

    <!-- Copy the text -->
    <copy-action copy-action-message-id="'message-user-' + message._id"
                 copy-action-display="message.category == 'text'">
    </copy-action>

    <!-- Talk with -->
    <chat-action chat-action-display="message.sender != vm.user.username && $state.current.name != 'app.chat.user'"
                 chat-action-on-click="goTo.view('app.chat.user', {username: message.sender})">
    </chat-action>

    <!-- Zoom -->
    <zoom-action zoom-action-display="message.category == 'image'"
                 zoom-action-image="message.content">
    </zoom-action>

    <!-- Accordion -->
    <accordion-action accordion-action-display="vm.methods.isMedia(message)"
                      accordion-action-expanded="message.expanded"
                      accordion-action-on-click="vm.methods.onToggleSingleExpanded()">
    </accordion-action>

    <!-- Download -->
    <download-action download-action-display="vm.methods.isMedia(message)"
                     download-action-src="{{ message.content.url }}"
                     download-action-name="{{ message.content.fullName }}">
    </download-action>

    <!-- Remove -->
    <remove-action remove-action-display="message.sender == vm.user.username || vm.isUserAdmin"
                   remove-action-message="message">
    </remove-action>
</div>
{'fraction_non_alphanumeric': 0.190704688785303, 'fraction_numerical': 0.00027419797093501506, 'mean_word_length': 2.3726306056403144, 'pattern_counts': {'":': 0, '<': 129, '<?xml version=': 0, '>': 129, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 12, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3426241', 'n_tokens_mistral': 2149, 'n_tokens_neox': 2076, 'n_words': 312}