Skip to content

Commit 094c1de

Browse files
Merge pull request #49 from jellyfin/release-10.1.0
Release 10.1.0
2 parents e83a918 + 2203f5d commit 094c1de

File tree

331 files changed

+49215
-25818
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

331 files changed

+49215
-25818
lines changed

.gitattributes

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/CONTRIBUTORS.md merge=union

CONTRIBUTORS.md

+6
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,14 @@
99
- [bfayers](https://github.com/bfayers)
1010
- [Bond_009](https://github.com/Bond-009)
1111
- [AnthonyLavado](https://github.com/anthonylavado)
12+
- [dkanada](https://github.com/dkanada)
1213
- [sparky8251](https://github.com/sparky8251)
1314
- [LeoVerto](https://github.com/LeoVerto)
15+
- [cvium](https://github.com/cvium)
16+
- [grafixeyehero](https://github.com/grafixeyehero)
17+
- [Drago96](https://github.com/drago-96)
18+
- [ViXXoR](https://github.com/ViXXoR)
19+
- [nkmerrill] (https://github.com/nkmerrill)
1420

1521
# Emby Contributors
1622

src/addplugin.html

-38
Original file line numberDiff line numberDiff line change
@@ -35,44 +35,6 @@ <h2 class="sectionTitle">${HeaderInstall}</h2>
3535
</p>
3636
<p id="nonServerMsg"></p>
3737
</form>
38-
39-
<div class="premiumPackage" style="display: none; margin-top: 1.5em;">
40-
<div>
41-
<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
42-
<p id="regStatus">
43-
</p>
44-
<div class="supporterDescription">
45-
46-
<p>${MessagePluginRequiresSubscription}</p>
47-
48-
<p><a is="emby-linkbutton" class="button-link" href="https://github.com/jellyfin/jellyfin" target="_blank">${LinkLearnMoreAboutSubscription}</a></p>
49-
50-
</div>
51-
<div class="premiumDescription">
52-
53-
<p>${MessagePremiumPluginRequiresMembership}</p>
54-
55-
<p><a is="emby-linkbutton" class="button-link" href="https://github.com/jellyfin/jellyfin" target="_blank">${LinkLearnMoreAboutSubscription}</a></p>
56-
</div>
57-
<div class="premiumHasPrice" style="display: none">
58-
<p id="regPrice">
59-
</p>
60-
<input type="hidden" name="cmd" value="_xclick">
61-
<input type="hidden" id="payPalEmail" name="business" value="[email protected]">
62-
<input type="hidden" name="currency_code" value="USD">
63-
<input type="hidden" id="featureName" name="item_name" value="">
64-
<input type="hidden" id="amount" name="amount" value="10">
65-
<input type="hidden" id="featureId" name="item_number" value="">
66-
<input type="hidden" name="notify_url" value="https://mb3admin.local/admin/service/services/ppipn.php">
67-
<input type="hidden" name="return" id="paypalReturnUrl" value="#">
68-
<button is="emby-button" type="submit" id="ppButton" class="raised block button-submit" style="background-color: #179BD7;color:#fff;">
69-
<span>${RegisterWithPayPal}</span>
70-
</button>
71-
72-
</div>
73-
</form>
74-
</div>
75-
</div>
7638
</div>
7739
</div>
7840
<br />

src/addserver.html

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<div data-role="page" class="page standalonePage">
2+
<div class="padded-left padded-right padded-bottom-page">
3+
<form class="manualServerForm" style="margin: 0 auto;">
4+
<h1 style="text-align: left;">${HeaderConnectToServer}</h1>
5+
<div class="inputContainer">
6+
<input is="emby-input" type="text" id="txtServerHost" required="required" label="${LabelServerHost}" />
7+
<div class="fieldDescription" style="text-align: left;">${LabelServerHostHelp}</div>
8+
</div>
9+
<br />
10+
<div class="inputContainer">
11+
<input is="emby-input" type="number" id="txtServerPort" step="1" min="0" value="8096" label="${LabelServerPort}" />
12+
</div>
13+
<br />
14+
<button is="emby-button" type="submit" class="raised button-submit block">
15+
<span>${ButtonConnect}</span>
16+
</button>
17+
<button is="emby-button" type="button" class="raised button-cancel block btnCancelManualServer">
18+
<span>${ButtonCancel}</span>
19+
</button>
20+
</form>
21+
</div>
22+
</div>

src/bower_components/emby-apiclient/apiclient.js

+4-43
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
define(["events", "appStorage", "wakeOnLan"], function(events, appStorage, wakeOnLan) {
1+
define(["events", "appStorage"], function(events, appStorage) {
22
"use strict";
33

44
function redetectBitrate(instance) {
@@ -201,36 +201,6 @@ define(["events", "appStorage", "wakeOnLan"], function(events, appStorage, wakeO
201201
ratio && (options.minScale && (ratio = Math.max(options.minScale, ratio)), options.width && (options.width = Math.round(options.width * ratio)), options.height && (options.height = Math.round(options.height * ratio)), options.maxWidth && (options.maxWidth = Math.round(options.maxWidth * ratio)), options.maxHeight && (options.maxHeight = Math.round(options.maxHeight * ratio))), options.quality = options.quality || instance.getDefaultImageQuality(options.type), instance.normalizeImageOptions && instance.normalizeImageOptions(options)
202202
}
203203

204-
function getCachedWakeOnLanInfo(instance) {
205-
var serverId = instance.serverId(),
206-
json = appStorage.getItem("server-" + serverId + "-wakeonlaninfo");
207-
return json ? JSON.parse(json) : []
208-
}
209-
210-
function refreshWakeOnLanInfoIfNeeded(instance) {
211-
wakeOnLan.isSupported() && instance.accessToken() && !1 !== instance.enableAutomaticBitrateDetection && (console.log("refreshWakeOnLanInfoIfNeeded"), setTimeout(refreshWakeOnLanInfo.bind(instance), 1e4))
212-
}
213-
214-
function refreshWakeOnLanInfo() {
215-
var instance = this;
216-
console.log("refreshWakeOnLanInfo"), instance.getWakeOnLanInfo().then(function(info) {
217-
var serverId = instance.serverId();
218-
return appStorage.setItem("server-" + serverId + "-wakeonlaninfo", JSON.stringify(info)), info
219-
}, function(err) {
220-
return []
221-
})
222-
}
223-
224-
function sendNextWakeOnLan(infos, index, resolve) {
225-
if (index >= infos.length) return void resolve();
226-
var info = infos[index];
227-
console.log("sending wakeonlan to " + info.MacAddress), wakeOnLan.send(info).then(function(result) {
228-
sendNextWakeOnLan(infos, index + 1, resolve)
229-
}, function() {
230-
sendNextWakeOnLan(infos, index + 1, resolve)
231-
})
232-
}
233-
234204
function compareVersions(a, b) {
235205
a = a.split("."), b = b.split(".");
236206
for (var i = 0, length = Math.max(a.length, b.length); i < length; i++) {
@@ -266,7 +236,7 @@ define(["events", "appStorage", "wakeOnLan"], function(events, appStorage, wakeO
266236
}
267237
return this._serverAddress
268238
}, ApiClient.prototype.onNetworkChange = function() {
269-
this.lastDetectedBitrate = 0, this.lastDetectedBitrateTime = 0, setSavedEndpointInfo(this, null), redetectBitrate(this), refreshWakeOnLanInfoIfNeeded(this)
239+
this.lastDetectedBitrate = 0, this.lastDetectedBitrateTime = 0, setSavedEndpointInfo(this, null), redetectBitrate(this)
270240
}, ApiClient.prototype.getUrl = function(name, params, serverAddress) {
271241
if (!name) throw new Error("Url name cannot be empty");
272242
var url = serverAddress || this._serverAddress;
@@ -301,7 +271,7 @@ define(["events", "appStorage", "wakeOnLan"], function(events, appStorage, wakeO
301271
}
302272
return this.fetchWithFailover(request, !0)
303273
}, ApiClient.prototype.setAuthenticationInfo = function(accessKey, userId) {
304-
this._currentUser = null, this._serverInfo.AccessToken = accessKey, this._serverInfo.UserId = userId, redetectBitrate(this), refreshWakeOnLanInfoIfNeeded(this)
274+
this._currentUser = null, this._serverInfo.AccessToken = accessKey, this._serverInfo.UserId = userId, redetectBitrate(this)
305275
}, ApiClient.prototype.serverInfo = function(info) {
306276
return info && (this._serverInfo = info), this._serverInfo
307277
}, ApiClient.prototype.getCurrentUserId = function() {
@@ -360,7 +330,7 @@ define(["events", "appStorage", "wakeOnLan"], function(events, appStorage, wakeO
360330
contentType: "application/json"
361331
}).then(function(result) {
362332
var afterOnAuthenticated = function() {
363-
redetectBitrate(instance), refreshWakeOnLanInfoIfNeeded(instance), resolve(result)
333+
redetectBitrate(instance), resolve(result)
364334
};
365335
instance.onAuthenticated ? instance.onAuthenticated(instance, result).then(afterOnAuthenticated) : afterOnAuthenticated()
366336
}, reject)
@@ -1579,19 +1549,10 @@ define(["events", "appStorage", "wakeOnLan"], function(events, appStorage, wakeO
15791549
return this.getJSON(this.getUrl("System/Endpoint")).then(function(endPointInfo) {
15801550
return setSavedEndpointInfo(instance, endPointInfo), endPointInfo
15811551
})
1582-
}, ApiClient.prototype.getWakeOnLanInfo = function() {
1583-
return this.getJSON(this.getUrl("System/WakeOnLanInfo"))
15841552
}, ApiClient.prototype.getLatestItems = function(options) {
15851553
return options = options || {}, this.getJSON(this.getUrl("Users/" + this.getCurrentUserId() + "/Items/Latest", options))
15861554
}, ApiClient.prototype.getFilters = function(options) {
15871555
return this.getJSON(this.getUrl("Items/Filters2", options))
1588-
}, ApiClient.prototype.supportsWakeOnLan = function() {
1589-
return !!wakeOnLan.isSupported() && getCachedWakeOnLanInfo(this).length > 0
1590-
}, ApiClient.prototype.wakeOnLan = function() {
1591-
var infos = getCachedWakeOnLanInfo(this);
1592-
return new Promise(function(resolve, reject) {
1593-
sendNextWakeOnLan(infos, 0, resolve)
1594-
})
15951556
}, ApiClient.prototype.setSystemInfo = function(info) {
15961557
this._serverVersion = info.Version
15971558
}, ApiClient.prototype.serverVersion = function() {

src/bower_components/emby-apiclient/credentials.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ define(["events", "appStorage"], function(events, appStorage) {
2424
var existing = list.filter(function(s) {
2525
return s.Id === server.Id
2626
})[0];
27-
return existing ? (existing.DateLastAccessed = Math.max(existing.DateLastAccessed || 0, server.DateLastAccessed || 0), existing.UserLinkType = server.UserLinkType, server.AccessToken && (existing.AccessToken = server.AccessToken, existing.UserId = server.UserId), server.ExchangeToken && (existing.ExchangeToken = server.ExchangeToken), server.RemoteAddress && (existing.RemoteAddress = server.RemoteAddress), server.ManualAddress && (existing.ManualAddress = server.ManualAddress), server.LocalAddress && (existing.LocalAddress = server.LocalAddress), server.Name && (existing.Name = server.Name), server.WakeOnLanInfos && server.WakeOnLanInfos.length && (existing.WakeOnLanInfos = server.WakeOnLanInfos), null != server.LastConnectionMode && (existing.LastConnectionMode = server.LastConnectionMode), server.ConnectServerId && (existing.ConnectServerId = server.ConnectServerId), existing) : (list.push(server), server)
27+
return existing ? (existing.DateLastAccessed = Math.max(existing.DateLastAccessed || 0, server.DateLastAccessed || 0), existing.UserLinkType = server.UserLinkType, server.AccessToken && (existing.AccessToken = server.AccessToken, existing.UserId = server.UserId), server.ExchangeToken && (existing.ExchangeToken = server.ExchangeToken), server.RemoteAddress && (existing.RemoteAddress = server.RemoteAddress), server.ManualAddress && (existing.ManualAddress = server.ManualAddress), server.LocalAddress && (existing.LocalAddress = server.LocalAddress), server.Name && (existing.Name = server.Name), null != server.LastConnectionMode && (existing.LastConnectionMode = server.LastConnectionMode), server.ConnectServerId && (existing.ConnectServerId = server.ConnectServerId), existing) : (list.push(server), server)
2828
}, Credentials
2929
});
Original file line numberDiff line numberDiff line change
@@ -1,158 +1,113 @@
1-
.actionSheet,
2-
.actionSheetContent {
3-
display: -webkit-box;
4-
display: -webkit-flex
5-
}
6-
7-
.actionSheetContent,
8-
.actionSheetScroller {
9-
-webkit-box-orient: vertical;
10-
-webkit-box-direction: normal
11-
}
12-
131
.actionSheet {
142
display: flex;
15-
-webkit-box-pack: center;
16-
-webkit-justify-content: center;
173
justify-content: center;
184
padding: 0;
195
border: none;
206
max-height: 84%;
21-
-webkit-border-radius: .1em !important;
22-
border-radius: .1em !important
7+
border-radius: .1em !important;
238
}
249

2510
.actionsheet-not-fullscreen {
2611
max-width: 90%;
27-
max-height: 90%
12+
max-height: 90%;
2813
}
2914

3015
.actionsheet-fullscreen {
3116
max-height: none;
32-
-webkit-border-radius: 0 !important;
33-
border-radius: 0 !important
17+
border-radius: 0 !important;
3418
}
3519

3620
.actionSheetContent-centered {
3721
text-align: center;
38-
-webkit-box-align: center;
39-
-webkit-align-items: center;
40-
align-items: center
22+
align-items: center;
4123
}
4224

4325
.actionSheetContent {
4426
margin: 0 !important;
4527
padding: .4em 0 !important;
46-
-webkit-flex-direction: column;
4728
flex-direction: column;
4829
display: flex;
49-
-webkit-box-pack: center;
50-
-webkit-justify-content: center;
5130
justify-content: center;
52-
-webkit-box-flex: 1;
53-
-webkit-flex-grow: 1;
5431
flex-grow: 1;
55-
overflow: hidden
32+
overflow: hidden;
5633
}
5734

5835
.actionSheetMenuItem {
5936
font-weight: inherit;
60-
-webkit-box-shadow: none;
6137
box-shadow: none;
62-
-webkit-flex-shrink: 0;
63-
flex-shrink: 0
38+
flex-shrink: 0;
6439
}
6540

66-
.actionSheetMenuItem:focus {
67-
-webkit-transform: none !important;
68-
transform: none !important
69-
}
41+
.actionSheetMenuItem:focus {
42+
transform: none !important;
43+
}
7044

7145
.actionsheetListItemBody {
72-
padding: .4em 1em .4em .6em !important
46+
padding: .4em 1em .4em .6em !important;
7347
}
7448

7549
.actionSheetItemText {
7650
white-space: nowrap;
7751
overflow: hidden;
78-
-o-text-overflow: ellipsis;
7952
text-overflow: ellipsis;
8053
vertical-align: middle;
81-
-webkit-box-flex: 1;
82-
-webkit-flex-grow: 1;
8354
flex-grow: 1;
84-
display: -webkit-box;
85-
display: -webkit-flex;
8655
display: flex;
87-
-webkit-box-pack: start;
88-
-webkit-justify-content: flex-start;
89-
justify-content: flex-start
56+
justify-content: flex-start;
9057
}
9158

9259
.actionSheetItemAsideText {
9360
opacity: .7;
9461
font-size: 90%;
95-
display: -webkit-box;
96-
display: -webkit-flex;
9762
display: flex;
98-
-webkit-box-pack: end;
99-
-webkit-justify-content: flex-end;
10063
justify-content: flex-end;
101-
-webkit-flex-shrink: 0;
10264
flex-shrink: 0;
10365
margin-left: 5em;
104-
margin-right: .5em
66+
margin-right: .5em;
10567
}
10668

10769
.actionSheetScroller {
70+
/* Override default style being applied by polymer */
10871
margin-bottom: 0 !important;
109-
display: -webkit-box;
110-
display: -webkit-flex;
11172
display: flex;
112-
-webkit-flex-direction: column;
11373
flex-direction: column;
114-
width: 100%
74+
width: 100%;
11575
}
11676

11777
.actionSheetScroller-tv {
11878
max-height: 64%;
11979
max-width: 60%;
120-
width: auto
80+
width: auto;
12181
}
12282

12383
.actionsheetDivider {
12484
height: .07em;
12585
margin: .25em 0;
126-
-webkit-flex-shrink: 0;
127-
flex-shrink: 0
86+
flex-shrink: 0;
12887
}
12988

13089
.actionSheetTitle {
13190
margin: .6em 0 .7em !important;
13291
padding: 0 .9em;
133-
-webkit-box-flex: 0;
134-
-webkit-flex-grow: 0;
135-
flex-grow: 0
92+
flex-grow: 0;
13693
}
13794

13895
.actionSheetText {
13996
padding: 0 1em;
140-
-webkit-box-flex: 0;
141-
-webkit-flex-grow: 0;
142-
flex-grow: 0
97+
flex-grow: 0;
14398
}
14499

145100
.actionsheetMenuItemIcon {
146101
margin: 0 .85em 0 .45em !important;
147-
padding: 0 !important
102+
padding: 0 !important;
148103
}
149104

150105
.actionsheet-xlargeFont {
151-
font-size: 112% !important
106+
font-size: 112%!important;
152107
}
153108

154109
.btnCloseActionSheet {
155110
position: fixed;
156111
top: .75em;
157-
left: .5em
158-
}
112+
left: .5em;
113+
}

0 commit comments

Comments
 (0)